0

アプリケーションのルックアップとして機能するプロトタイプ チェーンに設定オブジェクトを作成したいと考えています。私はこれを試しました:

http://jsfiddle.net/7kwXd/3/

var d9l = {};

d9l.aMethod = function() {
    //fails here with Cannot read property 'dimension1' of undefined 
    alert(this.anObject.dimension1);
};

d9l.aMethod.prototype.anObject = {
   dimension1 : "x1",
   dimension2 : "y1"
};

var testing = d9l.aMethod();

しかし、コンストラクターで未定義のプロパティ 'dimension1' を読み取ることができません。プロトタイプをオブジェクトとして定義することはできませんか?

4

2 に答える 2

2

d9lは構築されたオブジェクトではないため、そのメソッドは期待どおりに参照しthisません。確認するには、alert(this)何が得られるかを試してみてください。

修正するには、次のようにします。

function d9l() {}
d9l.prototype.aMethod = function() {
    alert(this.anObject.dimension1);
};
d9l.prototype.anObject = {
    dimension1: "x1",
    dimension2: "y1"
};
var testing = (new d9l()).aMethod();
于 2013-11-01T15:14:55.793 に答える