1

以下のコードのようにthisアラートが発生するのはなぜですか?undefined

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

var testObj = {};

testObj.aMethod = function() {
    this.testVar = "thing"
    alert(this.anObject.dimension1);
    alert(this.anObject.dimension2);
};

testObj.aMethod.prototype.anObject = {
   dimension1 : this.testVar,
   dimension2 : "thing2"
};

var testing = new testObj.aMethod();
4

1 に答える 1

2

{dimension1: this.testVar, dimension2: "thing2"}オブジェクト コンテキストなしでオブジェクト ( ) を作成しています。thisその時どうあるべきか?その後、に割り当てていtestObj.aMethod.prototype.anObjectます。

次のようなコードを使用して、目的を達成できます。

var testObj = {};

testObj.aMethod = function() {
    this.testVar = "thing"
    alert(this.anObject.dimension1);
    alert(this.anObject.dimension2);
};

testObj.aMethod.prototype.getAnObject = function() {
   return {
       dimension1 : this.testVar,
       dimension2 : "thing2"
   };
};

var testing = new testObj.aMethod();

そして、そのオブジェクトにアクセスしますtesting.getAnObject().dimension1

于 2013-11-02T10:24:10.700 に答える