2016-05-08 8 views
0

たとえば、3つの「クラス」(関数)があります。 フルーツ< = Apple < = GreenApple。 AppleはFruitから継承し、GreenAppleはAppleから継承します。 (インスタンスのプロトタイプを使用)。 正しく理解していれば、 "fruit.prototype"はオブジェクト、 "apple.prototype"は果物、 "greenApple.prototype"は "Apple"です。 "Apple.prototype.getInfo" の "Apple.prototype" を意味するもの「プロトタイプにメソッドを追加する」とはどういう意味ですか?

???: だから、これを考慮、私は、次の質問を持っている

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

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

再び:私にとっては、Appleのプロトタイプフルーツ(Apple.prototype == Fruit)ですが、上のコードでは別の方法を使用していますので、Apple.prototypeとは何ですか? Appleの新しいインスタンスを取得した場合。

var greenApple = new GreenApple('apple1'); 

とGreenAppleクラスにはGETINFO方法がない場合、それはgreenApple.prototype(アップル)を見てすることがありますが、GETINFOはApple.prototypeで宣言された(それ何である)??

最後に: の間にどのような違い:

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

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

答えて

2

Appleのプロトタイプは、フルーツ(Apple.prototype ==フルーツ)

番です」 Appleのプロトタイプはです場合:フルーツええ、ちょうど再びミスをsyntaxis、しかしがあり、前者の手段は

Apple.prototype instanceof Fruit 

後者の手段

Apple.prototype === Fruit 
+0

を意味し、 "Appleのプロトタイプは、フルーツです

」を意味するものではありません"私たちはAppleの新しいインスタンスを手に入れます。 var greenApple = new GreenApple( 'apple1'); Appleクラスから継承するクラス GreenAppleクラスに「getInfo」メソッドがない場合、greenApple.prototype(Apple)が表示されますが、** Apple.prototype **(what is it)でgetInfoが宣言されます。 ?? –

+0

いいえ、 'greenApple.prototype'は' Apple'のインスタンスであり、 'Apple'自体ではありません。だから、単にApple.prototype'から継承した、いくつかのメソッドやプロパティを持つオブジェクトです。 – Oriol

+0

しかし、Apple.prototype === Fruit'ではなく、 'Apple.prototype'から継承することはできますか?私はそれがAppleから直接継承されていると思った。そこで、私の質問があります:** Apple.prototypeは何ですか?それは 'フルーツ'なのでしょうか?** –

関連する問題