Ext.namespace解析
文章分类:Web前端 对于这个函数,我一直不太清楚,今天查了查官方的解释,豁然开朗。
对于java中的包,我们都认为主要是为了类名重复而引入的一种管理类的方法。同样,因为js定义的类太多,难免会定义重复的类名。特别是在今天这个需要共同协作完成项目的世界里。Ext.namespace正是为此而生。
Ext.namespace('com.company');
就是定义了一个com.company的包。
com.company.ClassA = function(){};就是定义了com.company包下面的一个Class。你一定会问,既然定义了包,为什么还要写包的前缀 com.company?我直接写com.company.ClassA = function(){}不行吗?对,一开始我也有这样的疑惑,com.company.ClassA不就是一个变量名称吗?哪儿来的包。后来经实 践,javascript的变量名称是不准包括'.'的。因此,直接写com.company.ClassA = function(){};在语法上是不正确的。
现在想起来Ext在namespace的解决方法了。查看ext的官方解释,如果我们不用Ext.namespace的话,创建命名空间应该这样。
if (!App) App = {};
if (!App.form) App.form = {};
if (!App.data) App.data = {};
而 Ext.namespace('App', 'App.form', 'App.data');
则跟上面3句话的作用是一样的。
可以看出,这个包其本质上是一个对象,一个window的变量。也就是说,我们的包是一个分层次的对象。如com.company,应该解释成 com对象的一个属性 company。如果定义这个包下面的类,则应该把这个类添加到com对象的属性company的属性里面。
到此,ext的 namespace的实现机制基本上就出来了。尽管实现包的方法很牵强,但目前可能是一个比较好的解决方案了。
分享到:
相关推荐
5. `Ext.namespace( String namespace1, String namespace2, String etc )`: 它创建命名空间,有助于组织代码,避免全局变量污染。例如,`Ext.namespace('MyApp.models', 'MyApp.views')`会创建`MyApp.models`和`...
9. **Ext.urlDecode(String string, [Boolean overwrite])**:将URL编码的字符串解析为JSON对象。如果`overwrite`为`true`,后面的同名参数会覆盖前面的,否则以数组形式保存。例如,`Ext.urlDecode("a=1&b=2&c=1&c=...
8. **Ext.urlEncode()** 和 **Ext.urlDecode()**: 分别用于将JSON对象转换成URL编码的字符串,以及将URL编码的字符串解析回JSON对象。它们支持数组参数,允许多个值对应同一个键。 9. **Ext.each()**: 这是一个遍历...
13.2 Ext Framework架构解析........................ 342 13.2.1 主要的第三方包...................... 342 13.2.2 后台类关系图.......................... 342 13.2.3 前台组件关系图...................... 344...
`Ext.namespace`是Extjs中的一个方法,用于定义命名空间。命名空间是一种组织代码的方式,避免全局变量污染,并允许在不同模块间共享资源。例如,在代码中出现的`Ext.namespace('com.faceye.layout');`就是创建了一...
本文将深入解析EXT框架中的几个关键API,帮助开发者更好地理解和运用这些API来增强Web应用的功能性和交互性。 #### 二、详细知识点解析 ##### 1. `addBehaviors(Object obj):void` - **功能**:此方法用于向DOM...
例如,`Ext.namespace('Company.data')`创建了Company和Company.data两个命名空间。 15. **num**: 将给定值转换为数字,如果无法转换,将返回默认值。默认值不一定是数字,只要能被JavaScript解析为数字即可。 EXT...
这里首先使用`Ext.namespace`函数来声明一个名为`test.grid`的命名空间。这样做的目的是为了组织代码结构,避免变量名冲突。 2. **创建HttpProxy** ```javascript var proxy_url = 'data.jsp'; var _proxy = ...
- 使用`Ext.namespace`方法来定义命名空间。 - **Extjs OOP** - Extjs提供了一套面向对象的编程模型,支持类的继承、封装等特性。 - 通过`Ext.extend`和`Ext.override`方法可以实现类的继承和重写。 - **配置...
总结来说,Struts2与Ext4.0的JSON交互涉及Struts2的JSON插件配置、Action类的JSON返回、以及Ext4.0的Ajax请求和JSON解析。这种交互方式极大地提高了Web应用的用户体验,因为可以通过异步方式更新页面,而无需每次都...
<package name="extjs" extends="json-default" namespace="/"> <action name="Upload" class="com.example.FileUploadAction"> <param name="uploadPath">/files/ <param name="contentType">text/html;...
最后,处理程序将结果以JSON格式返回给前端,EXT JS的Combox将解析这个JSON并动态更新其下拉列表。 总结来说,EXT Combox的模糊查询功能是通过前端监听输入事件,发送请求到服务器,服务器根据请求参数执行模糊查询...
文件中还涉及到了命名空间的使用,通过`Ext.namespace('myNameSpace')`创建了`myNameSpace`命名空间。命名空间是一种避免全局变量污染的方法,特别是在大型项目中,可以有效地组织和管理代码,防止不同模块间命名...
Struts2的Result类型可以设置为JSON,以便返回的数据能被EXTJS解析。 具体步骤如下: 1. 创建EXTJS Grid:定义列模型、Store和Column模型,配置分页参数。 ```javascript var store = Ext.create('Ext.data.Store'...
Ext.namespace('Ext.dojochina'); Ext.dojochina.Person = function() { this.addEvents('namechange', 'sexchange'); }; ``` 这里,`addEvents`方法用于声明`Person`类支持的事件类型,即`namechange`和`...
<package name="tree" namespace="/tree" extends="json-default"> <action name="load" class="com.example.TreeAction"> <param name="root">nodes ``` 4. **创建ExtJs TreePanel** 在前端,使用...
这里,`<result type="json">`指定了当`execute()`方法被调用时,返回的数据格式为JSON,这与ExtJS的异步请求相匹配,使得前端可以直接解析并处理服务器返回的数据。 ### 2. User实体类设计 在代码片段中,`User`...