JS命名空间未定义

时间:2014-05-05 16:22:16

标签: javascript jquery

这对我来说有点奇怪,为什么它在这个意义上不起作用。我有一个名为的命名空间 PTN128.OPERATIONS

它在应用程序的顶层创建在一个全局文件中(某些代码省略了空格):

var PTN128 = PTN128 || {};

然后我有一个名为

的函数
PTN128.namespace = function () 

通过

创建我的命名空间
PTN128.namespace("PTN128.OPERATIONS");

Default page screen shot 在我的默认页面中,我然后在尝试调用之前定义了什么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的函数为enter image description here。当我直接从控制台窗口调用该函数时:

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();
}());

0 个答案:

没有答案