Ext中namespace的作用2011-10-29Ext中在每一个页面中添加一个namespace呢,就像下面的代码:
// create namespace
Ext.namespace("myNameSpace");
// create application
myNameSpace.app = function() {
// do NOT access DOM from here; elements don"t exist yet
// private variables
// private functions
// public space
return {
// public properties, e.g. strings to translate
// public methods
init: function() {
alert("Application successfully initialized");
}
};
}(); // end of app
作用呢就是用来封装一个global范围对象的属性和方法,以避免和其它的对象的属性和方法发生冲突,定义在return块中的方法和属性是公共的,外界可以直接访问,而其余的属性则不允许外界访问,通过这种方式,Ext较好的实现了在JavaScript中定义属性的public/private 问题。以下是我又从网上查找的另一篇:Ext2.0中,Ext类有个namespace方法,该方法的作用是把传入的参数转换成对象.使用该方法的目的主要在于可以区分类名相同的类,这有点和java中的package作用类似.让我们先看下源码:
namespace : function(){
var a=arguments, o=null, i, j, d, rt;
for (i=0; i<a.length; ++i) {
d=a[i].split(".");
rt = d[0];
eval("if (typeof " + rt + " == "undefined"){" + rt + " = {};} o = " + rt + ";");
for (j=1; j<d.length; ++j) {
o[d[j]]=o[d[j]] || {};
o=o[d[j]];
}
}
}