javascript“严格”并实例化全局模块

时间:2013-01-03 13:00:35

标签: javascript design-patterns

我想在javascript中使用"use strict";模式但是在严格警告方面存在一些问题。 我有一个“小部件”,例如:

var Widget = function () { /* ... */ }

在我使用它之前(在模块内):

(function () {
    var w1 = new Widget();
}());

当我将"use strict";添加到此上下文时,我收到警告"Widget"未定义:

(function () {
    "use strict";
    var w1 = new Widget();      // <- warning here
}());

这样做的正确方法是什么?

我应该以不同的方式定义我的“小部件”吗?

1 个答案:

答案 0 :(得分:2)

在严格模式下,您不会意外地创建全局变量。正如您所注意到的那样,尝试这样做会抛出引用错误。因此,您需要命名一个已分配Widget的对象:

window.Widget = function () { /* ... */ }
(function () {
    "use strict";
    var w1 = new window.Widget();
}());

更多信息:MDNwww.nczonline.net