在新对象中调用原型另一个原型

时间:2016-05-06 02:56:56

标签: javascript jquery node.js prototype prototypejs

这返回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是未定义的。为什么呢?

1 个答案:

答案 0 :(得分: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);

};