Javascript中的命名空间问题

我想通过命名空间将常规函数转换为函数。 这是常规功能:

surprise();    

function surprise() {
    alert('TEST');
}

这与namespacing的功能相同:

var namespace = {};

namespace.surprise();

namespace.surprise = function () {
    alert('TEST');
};

我得到以下错误: Uncaught TypeError: namespace.surprise is not a function


如果你在函数定义之前调用,你会得到一个TypeError 。 您必须首先定义该功能。 在定义它之前,名称空间没有surprise功能,一旦你调用它,JavaScript就不知道你在说什么。

正常函数不需要首先定义的原因是:

函数声明是神奇的,并且使得它的标识符在其代码块*中的任何内容被执行之前被绑定。

那是从这里开始的。 function语句必须function关键字定义,而不是像下面这样存储在变量中:

var myFunc = function () {
    ...
}

以上述方式进行治疗。 由于名称空间将函数存储到变量中,因此在定义之前,它们失去了使用的能力。

链接地址: http://www.djcxy.com/p/17049.html

上一篇: Namespacing issue in Javascript

下一篇: Using A Namespace In Place Of A Class