2016-05-06 107 views
0

返回thisFunction.weather.day()未定義。爲什麼?我是否正確?調用原型在新對象中的另一個原型

'use scrict'; 

    var thisFunction = function(){this.event(); }; 

    thisFunction.prototype.weather = function(){ 

     this.day = "Cloudy"; 

    }; 

    thisFunction.prototype.event = function(){ 

     console.log(thisFunction.weather().day); 

    }; 

    var g = new thisFunction(); 

我試圖調用事件內部的天氣函數。正如你可以在底部看到的那樣,一個新的變量等於new thisFunction()。如果我在事件內調用weather函數thisFunction.prototype.weather()。day是未定義的。爲什麼?

回答

1

thisFunction是您的構造函數。它不具有.weather()方法。所以,thisFunction.weatherundefinedthisFunction.weather()是一個錯誤。

.weather()方法是在原型上,這意味着它的實例thisFunction,而不是構造函數本身。所以,在你的代碼,你可以這樣做:

g.weather() 

或者,.event()方法裏面,你可以這樣做:

thisFunction.prototype.event = function(){ 

    console.log(this.weather()); 
}; 

爲了this.weather().day工作,你必須return this.weather()方法。

thisFunction.prototype.weather = function(){ 

    this.day = "Cloudy"; 
    return this; 

}; 

thisFunction.prototype.event = function(){ 

    console.log(this.weather().day); 

}; 
+0

好的,我怎樣才能在原型之外獲得weather.day?在原型之外,我包括var thisf = new thisFunction(); – NodeBeginner

+0

@NodeBeginner - 你只是在你的問題的例子中使用'g.day'。 – jfriend00

+0

@NodeBeginner - 這是在你的問題:'var g = new thisFunction();' – jfriend00