繁体   English   中英

Javascript中的命名空间问题

[英]Namespacing issue in Javascript

我正在尝试使用命名空间将常规函数转换为函数。 这是常规功能:

surprise();    

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

这与命名空间的功能相同:

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 () {
    ...
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM