2012-06-20 69 views
0

我有一些代碼,構造一個對象:的javascript:嚴格的模式和對象

function gridObjConst(id, itemName, itemPrice, itemListPrice, width, height, imgName) { 

    this.id = id; 
    this.itemName = itemName; 
    this.itemPrice = itemPrice; 
    this.itemListPrice = itemListPrice; 
    this.width = width; 
    this.height = height; 
    this.imgName = imgName; 

    return this; 
} 

我用了W3Schools的頁面作爲指導:http://www.w3schools.com/js/js_objects.asp

這一切都工作得很好。然後我在代碼的頂部添加了「嚴格使用」,並且此功能打破了。 Firebug報告:這是不明確的 - this.id = id

我該如何解決這個問題?

+0

你使用'new gridObjConst(...)'還是'gridObjConst(...)'? –

+1

另外:您可能想要尋找[比w3schools更可靠的來源](http://w3fools.com/)。 –

回答

3

這意味着您正在調用您的構造函數,但不包含new運算符。你需要這樣做:

var myGridObjConst = new gridObjConst(); 

當你調用而不new操作功能,this指窗口,但在嚴格的模式下,它does not,因此你的錯誤。

另請注意,您不需要從構造函數return this;this將自動返回。


正如@JoachimSauer指出,你應該看看學習JavaScript時使用MDN代替W3Schools的的。原型在您鏈接到的頁面上的任何地方都沒有提及的事實是非常荒謬的。