在原型中无法访问此内容

时间:2013-11-02 10:19:20

标签: javascript

为什么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();

1 个答案:

答案 0 :(得分: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访问该对象。