作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想创建自己的命名空间,比如 $ 用于 JQuery
(function(app) {
app.fn.log = function(data) {
console.log(data);
};
}(app));
app.log("data");
但此代码返回错误 - Uncaught ReferenceError: app is not defined
如何创建自己的命名空间?
最佳答案
在 javascript 中实现命名空间的一种常见方法是利用 module pattern具有直接的范围界定功能(就像您在问题中展示的那样)。这还允许您传入具有不冲突名称的对象,并将它们与您喜欢的参数化名称一起使用,例如 $
,如下所示:
//Global script declaration
var NAMESPACE = {};
//Check if you need to initialize your namespace
NAMESPACE.FooSpace = NAMESPACE.FooSpace || {};
//Some other script
NAMESPACE.FooSpace = (function($) {
function Foo1() {
}
function Foo2() {
return $.getSomething(); //some existing function inside of someObjectWithANonConflictingName object
}
return { Foo1: Foo1, Foo2: Foo2 };
})(someObjectWithANonConflictingName);
//somewhere else in code (call as a constructor function)
var foo = new NAMESPACE.FooSpace.Foo1();
//somewhere else in code (call as regular function)
var foo2 = Foo2();
NAMESPACE
对象,以便函数和变量的名称重叠。 NAMESPACE
对象中。关于javascript - 如何在 javascript 中创建自定义命名空间或类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22062746/
我是一名优秀的程序员,十分优秀!