gpt4 book ai didi

javascript - 如何在 javascript 中创建自定义命名空间或类

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:24:42 27 4
gpt4 key购买 nike

我想创建自己的命名空间,比如 $ 用于 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com