`

Ext源码分析:解析Ext的命名空间,Ext.namespace

 
阅读更多

初学者一定对Ext大量的命名空间感到不解,其实是非常简单的东西,看完这篇文章就明白了。

比如就用Ext.panel,Ext.layout.BorderLayout这2个命名空间来说吧,Ext是这样创建的:

Ext = {};
Ext.panel = {};
Ext.layout = {};
Ext.layout.BorderLayout = {};

说穿了是啥?对象里面套对象而已,很简单吧?我们来看看namespace的方法

  1. namespace : function(){
  2.             var a=arguments, o=null, i, j, d, rt;
  3.             for (i=0; i<a.length; ++i) {
  4.                 d=a[i].split(".");
  5.                 rt = d[0];
  6.                 eval('if (typeof ' + rt + ' == "undefined"){' + rt + ' = {};} o = ' + rt + ';');
  7.                 for (j=1; j<d.length; ++j) {
  8.                     o[d[j]]=o[d[j]] || {};
  9.                     o=o[d[j]];
  10.                 }
  11.             }
  12.         },
  13.         ......
  14.         ......
  15.         Ext.ns = Ext.namespace;
  16.         ......
  17.         ......
  18.         Ext.ns("Ext", "Ext.util", "Ext.grid", "Ext.dd", "Ext.tree", "Ext.data", "Ext.form", "Ext.menu", "Ext.state", "Ext.lib", "Ext.layout", "Ext.app", "Ext.ux");

首先通过arguments得到namespace方法的参数,然后用点号分割成数组,依次把空对象递归赋值进去,上面就是系统内建的命名空间

 

转自:http://sanlin0523.blog.sohu.com/91093047.html

分享到:
评论

相关推荐

    jsp+ext4(js部分由Ext Designer生成)

    4.Ext.define的命名包含了namespace。 *本例子是简单的实现了一下jsp+ex4的使用,引用了: Ext.form.Panel Ext.data.Model Ext.data.Store Ext.container.Viewport .... 希望能给初学者一点启示吧。 如果有不明白...

    EXT是一款强大的AJAX框架

    /** * 定义命名空间 */ Ext.namespace("Mis.Ext"); /* *CRUD面板基类 */ //继承EXT的Panel,创建CRUD面板 Mis.Ext.CrudPanel=Ext.extend(Ext.Panel,{……}); //限于篇幅就不列出全部代码 EXT里的继承用的是Ext....

    基于extjs的.NET3.5控件Coolite 1.0.0.34580(Preview预览版)

    8. Renamed Coolite.Ext.Web Namespace to Ext.Net 9. Renamed Coolite.Utilities Namespace to Ext.Net.Utilities 10. Renamed Coolite.Ext.UX Namespace to Ext.Net.UX 11. Renamed root singleton "Ext" class...

    Ext深入浅出 数据传输

    13.2 Ext Framework架构解析........................ 342 13.2.1 主要的第三方包...................... 342 13.2.2 后台类关系图.......................... 342 13.2.3 前台组件关系图...................... 344...

    ExtJSWeb应用程序开发指南(第2版)

    6.2.8 Ext.namespace() 6.2.9 Ext.each() 6.2.1 0Ext.apply() 6.2.1 1Ext.encode() 6.2.1 2Ext.htmlDecode() 6.2.1 3Ext.typeOf() 6.3 Ext.core.DomHelper 6.3.1 Ext.core.DomHepler.append() ...

    Pinch-emulator-for-Sencha-Touch-master

    1.0: New namespace, GPL license, demo app 0.2: Added visualization helpers for touches 0.1: Initial release Features: Enable pinch events on desktop Install: Place src to your app folder; Configure ...

    ExtJs中简单的登录界面制作方法

    一 首先请看图片 二 登陆... //创建命名空间 Ext.namespace(‘XQH.ExtJs.Frame’); //主应用程序 XQH.ExtJs.Frame.app = function() { } Ext.extend(XQH.ExtJs.Frame.app, Ext.util.Observable, { LoginLogo:new Ext.

    C#+EXT做的程序.下面为部分代码,下载绝对值得!

    namespace extTestSearch.Search { public partial class Search_Data : System.Web.UI.Page { string stationid = "dfjsbj0001"; protected void Page_Load(object sender, EventArgs e) { if (Request[...

    ExtJs GridPanel简单的增删改实现代码

    1.首先看下效果图: 2.ext代码 代码如下: /// ”http://www.cnblogs.com/Resources/ExtJs/vswd-ext_2.0.2.js”&gt; Ext.namespace(‘XQH.ExtJs.Frame’); XQH.ExtJs.Frame.RoleManage = function() { this.init(); }; ...

    discord.py存根:discord.py存根

    注意:由于discord.py使用名称空间包作为其扩展名, mypy必须将mypy配置为使用带有--namespace-packages命令行标志或通过在mypy配置文件中设置namespace_packages = True名称空间包。 有关更多详细信息,请参见mypy...

    能使用boost.python的MinGw(GCC)动态链接库

    using namespace boost::python; def("greet", greet); // 导出函数greet def("add", add); // 导出函数add def("vprint", vprint); // 导出函数vprint } 将上面的文件一定要保存为utf-8的格式(使用记事本在...

    JAVA_API1.6文档(中文)

    javax.xml.namespace XML 名称空间处理。 javax.xml.parsers 提供允许处理 XML 文档的类。 javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream....

    Ext.net中的MessageBox的简单应用实现代码

    @ Register Assembly=”Ext.Net” Namespace=”Ext.Net” TagPrefix=”ext” %&gt; [removed] [DirectMethod] public void DoConfirm&#40;&#41; { X.Msg.Confirm(“Message”, “Confirm?”, new M

    typo3-namespacer:移至名称空间时用于创建TYPO3扩展迁移文件的脚本

    #TYPO3命名空间 移至名称空间时用于创建TYPO3扩展迁移文件的脚本。 ##用法 只需将migration.php放到您的扩展文件夹中,并在脚本的开头调整目标供应商名称。 然后运行php migrate.php 。 这将导致创建两个文件:...

    java SE API

    javax.xml.namespace javax.xml.parsers javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax javax.xml.transform.stream javax.xml.validation javax.xml.xpath org.ietf.jgss org.omg...

    xom-1.1.jar

    nu/xom/Namespace.class 2.37 KB nu/xom/NamespaceConflictException.class 633.0 bytes nu/xom/Namespaces.class 1.66 KB nu/xom/NoSuchAttributeException.class 684.0 bytes nu/xom/...

    [Java参考文档].JDK_API 1.6

    javax.xml.namespace XML 名称空间处理。 javax.xml.parsers 提供允许处理 XML 文档的类。 javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream....

    discord-ext-typed命令

    该软件包包含discord.py扩展名,以提供类以更轻松地使用键入的命令安装pip install discord-ext-typed-commands注意:由于discord.py使用名称空间包作为其扩展名, mypy必须将mypy配置为使用带有--namespace-...

    Javase-6.0_中文API_HTML(最新更新)

    javax.xml.namespace javax.xml.parsers javax.xml.soap javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax javax....

    [Java参考文档]

    javax.xml.namespace XML 名称空间处理。 javax.xml.parsers 提供允许处理 XML 文档的类。 javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream....

Global site tag (gtag.js) - Google Analytics