javascript";严格的;以及实例化全局模块

javascript";严格的;以及实例化全局模块,javascript,design-patterns,Javascript,Design Patterns,我想“严格使用”模式,但在严格警告方面存在一些问题。 我有一个“小部件”,例如: 在我这样使用它之前(在模块内): 当我添加时,“使用严格”在此上下文中,我收到一条警告,提示未定义“小部件”: (function () { "use strict"; var w1 = new Widget(); // <- warning here }()); (函数(){ “严格使用”; var w1=new Widget();//在严格模式下,您不能意外创建全局变量。正如您

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

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

当我添加
时,“使用严格”
在此上下文中,我收到一条警告,提示未定义
“小部件”

(function () {
    "use strict";
    var w1 = new Widget();      // <- warning here
}());
(函数(){
“严格使用”;

var w1=new Widget();//在严格模式下,您不能意外创建全局变量。正如您所注意到的,尝试创建全局变量将引发引用错误。因此,您需要命名一个对象,该对象已分配
Widget

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

更多信息:,

谢谢@Teemu。如果您将此作为答复添加,我可以接受它来解决问题。顺便说一句,我认为您在声明window.Widget时不需要
var
(它会抛出错误)。
(function () {
    "use strict";
    var w1 = new Widget();      // <- warning here
}());
window.Widget = function () { /* ... */ }
(function () {
    "use strict";
    var w1 = new window.Widget();
}());