2013-01-03 38 views
2

我想在JavaScript中使用"use strict";模式,但在嚴格警告中存在一些問題。 我有一個「小部件」,例如:javascript「嚴格」並實例化全局模塊

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

我使用之前,它是這樣的(一個模塊內):

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

當我添加"use strict";到這方面,我得到一個警告,"Widget"沒有定義:

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

什麼是這樣做的正確方法?

我應該以不同的方式定義我的「小部件」嗎?

+0

謝謝@Teemu。如果您將此添加爲回覆,我可以接受它來解決問題。 – tborychowski

回答

2

在嚴格模式下,您不能無意中創建全局變量。正如你已經注意到的那樣,試圖這樣做會引發一個引用錯誤。因此,你需要命名的對象,這Widget分配:

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

更多信息:MDNwww.nczonline.net

+1

順便說一句,我不認爲你聲明window.Widget(它會引發錯誤)時需要'var'。 – tborychowski