什么意思"为原型添加方法"

时间:2016-05-08 16:44:06

标签: javascript oop inheritance constructor prototype

例如,我们已经有3个"类" (功能): Fruit< = Apple< = GreenApple。因此Apple继承自Apple和GreenApple继承自Apple。 (在实例上使用原型)。 所以,如果我理解正确:" fruit.prototype"是一个对象," apple.prototype"是一个水果和" greenApple.prototype"是一个" Apple"? 因此,考虑到这一点,我有以下问题:

什么意思" Apple.prototype"在" Apple.prototype.getInfo" ???:

function Apple (type) {
    this.type = type;
    this.color = "red";
}

Apple.prototype.getInfo = function() {
    return this.color + ' ' + this.type + ' apple';
};

再说一遍:对我来说,Apple的原型是Fruit(Apple.prototype == Fruit),但是在上面的代码中我们看到它使用了另一种方式,所以这里的Apple.prototype是什么? 如果我们得到Apple的新实例。

var greenApple = new GreenApple('apple1');

如果GreenApple类中没有getInfo方法,那么它应该看看greenApple.prototype(Apple),但是在Apple.prototype中声明了getInfo(它是什么)??

最后: 有什么区别:

Apple.prototype.getInfo = function(){*_*} 

Apple.getInfo = function() {*_*}

1 个答案:

答案 0 :(得分:2)

  

Apple的原型是Fruit(Apple.prototype == Fruit)

没有。 “Apple的原型 a Fruit”并不意味着“Apple的原型是Fruit”

前者意味着

Apple.prototype instanceof Fruit

后者意味着

Apple.prototype === Fruit