这返回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();
我试图在事件中调用天气功能。正如你在底部看到的那样,一个新的var g等于new thisFunction()。如果我在事件内调用天气函数thisFunction.prototype.weather()。day是未定义的。为什么呢?
答案 0 :(得分:1)
thisFunction
是你的构造函数。
它没有.weather()
方法。因此,thisFunction.weather
为undefined
,thisFunction.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);
};