0

オブジェクトを構築するコードがいくつかありました。

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

それはすべてうまくいきました。次に、コードの先頭に「use strict」を追加すると、この関数が壊れました。Firebug が報告されました: これは未定義です - this.id = id

これを修正するにはどうすればよいですか?

4

1 に答える 1

3

つまり、new演算子なしでコンストラクター関数を呼び出しているということです。これを行う必要があります:

var myGridObjConst = new gridObjConst();

new演算子なしで関数を呼び出すとthis、ウィンドウを参照しますが、厳密モードではそうではないため、エラーになります。

return this;また、コンストラクター関数から取得する必要がないことにも注意してください。this自動的に返却されます。


@JoachimSauer が指摘したように、JavaScript を学習するときは、W3Schools の代わりに MDN を使用することを検討する必要があります。リンク先のページのどこにもプロトタイプが言及されていないという事実は、まったくばかげています。

于 2012-06-20T11:52:11.250 に答える