2013-11-02 57 views
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(); 

回答

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