这对我来说有点奇怪,为什么它在这个意义上不起作用。我有一个名为的命名空间 PTN128.OPERATIONS
它在应用程序的顶层创建在一个全局文件中(某些代码省略了空格):
var PTN128 = PTN128 || {};
然后我有一个名为
的函数PTN128.namespace = function ()
通过
创建我的命名空间PTN128.namespace("PTN128.OPERATIONS");
在我的默认页面中,我然后在尝试调用之前定义了什么PTN128.OPERATIONS(jQuery之外的内容)
PTN128.OPERATIONS = {}
它有一个名为
的功能fncInit: function ()
使用jQuery我然后通过
调用它(function () {
PTN128.OPERATIONS.fncInit();
}());
我总是在控制台窗口中看到错误
Uncaught ReferenceError: OPERATIONS is not defined
我做的时候
(function () {
console.log(PTN128.OPERATIONS );
PTN128.OPERATIONS.fncInit();
}());
我看到名称空间OPERATIONS的函数为。当我直接从控制台窗口调用该函数时:
PTN128.OPERATIONS.fncInit();
我得到了同样的错误。
命名空间的所有内容都在
之外定义(function () {}());
我现在有点迷失下一步的尝试。我看到这篇文章Create “namespace” in $(document).ready(function() {..});并且看着我所做的看起来已经是这样了。任何帮助或建议将不胜感激。
感谢。
用于测试目的的额外代码
var PTN128 = PTN128 || {};
PTN128.namespace = function () {
var a = arguments, o = null, i, j, d;
for (i = 0; i < a.length; i = i + 1) {
d = ("" + a[i]).split(".");
o = PTN128;
for (j = (d[0] == "PTN128") ? 1 : 0; j < d.length; j = j + 1) {
o[d[j]] = o[d[j]] || {};
o = o[d[j]];
}
}
return o;
}
PTN128.namespace("PTN128.OPERATIONS");
PTN128.OPERATIONS = {
fncInit: function (console.log('test');
};
$(function () {
console.log(PTN128.OPERATIONS);
PTN128.OPERATIONS.fncInit();
}());