如何在JavaScript中创建命名空间
How do I create a namespace in JavaScript?
我想使用访问变量
MyNamespace.variable1
全球可访问的。我相信Drupal也做过类似的事情,不是吗?
var MyNamespace = {};
MyNamespace.variable1 = value1;
它真的只是一个物体。
Drupal所做的是使用以下代码:var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'locale': {} };
Drupal.attachBehaviors = function (context, settings) {
context = context || document;
settings = settings || Drupal.settings;
// Execute all of them.
$.each(Drupal.behaviors, function () {
if ($.isFunction(this.attach)) {
this.attach(context, settings);
}
});
};
Drupal.detachBehaviors = function (context, settings, trigger) {
context = context || document;
settings = settings || Drupal.settings;
trigger = trigger || 'unload';
// Execute all of them.
$.each(Drupal.behaviors, function () {
if ($.isFunction(this.detach)) {
this.detach(context, settings, trigger);
}
});
};
// …
使用类似的代码,可以使用JavaScript模拟名称空间。
此外,如果您有许多JS文件,每个文件都将一个"名称空间"或Object添加到顶级包中,则可以执行以下操作:
模块.js
// if Modules is null, create a new object, else use the currently defined instance
var Modules = Modules || {};
Modules.A = {};
// sample instance variable
Modules.A.instanceVar;
// sample function
Modules.A.myFunc = function(param1, param2) {
// do something
}
ModuleB.js
// if Modules is null, create a new object, else use the currently defined instance
var Modules = Modules || {};
Modules.B = {};
// sample instance variable
Modules.B.instanceVar;
// sample function
Modules.B.myFunc = function(param1, param2) {
// do something
}
然后,您当然可以根据需要将它们称为Modules.A.myFunc()
、Modules.B.myFunc()
或Modules.B.instnaceVar = 20;
。因此,您可以封装函数和变量。
对于我的代码,我喜欢有一个根对象,然后添加"类"(对象)到它,这样一切都有一个很好的"类似包"、"OOP"的结构。
只需创建一个对象。例如:
var MyNamespace = {};
MyNamespace.variable1 = ...
相关文章:
- 在命名空间中创建自定义事件
- Google Closure编译器为命名空间创建了不完整的别名
- 为什么使用自定义标记创建元素会在 IE9 或 10 的 outerHTML 中添加 xml 命名空间,直到调用 .fin
- 为命名空间上公开的方法创建类型定义
- 创建命名空间 Javascript 单例类的对象
- 如何在 Javascript 命名空间脚本中创建函数数组
- 如何为我的 class1 创建一个命名空间,然后将其实例化
- 创建具有命名空间的 SVG 对象
- 如何在同一个名称中创建两个不同的命名空间空间,避免覆盖第一个
- 使用命名空间创建新对象
- 如何创建一个空的命名空间对象而不覆盖另一个同名对象
- 如何在维护命名空间的同时创建类似jQuery的方法链接
- JavaScript函数创建命名空间
- 在node.js中创建一个带有命名空间的模块
- 在全局命名空间上创建新对象的合法使用
- 在jquery中创建命名空间时出错
- 在SVG命名空间中创建元素时绑定中断[使用JSFiddle]
- 在JavaScript中创建命名空间/类类型结构的最优雅的方法
- 正在为jquery插件创建命名空间
- 如何在JavaScript中创建命名空间