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 回答