3

コンソールで遊んで、プロトタイプの継承を理解しようとしています。私は古典的な継承に精通していますが、JS の作業で継承を使用したことはありません。

私が持っている場合:

var foo = {
    cat: "oliver"
}

var bar = Object.create(foo);

foo.prototype = {
    dog: "rover"
}

私がする時:

dir(bar.dog)

また

dir(foo.dog)

私は見ることを期待していますroverが、両方とも として戻ってきますundefined

私は何が欠けていますか?

前もって感謝します。

4

3 に答える 3

2

プロトタイプ メンバーは、インスタンス化するときにのみ使用できます。foo.cat「静的」プロパティのようなものであるため、使用できます (たとえば、PHP など、この種のコードをサポートする言語から)。また、あなたはfooプロトタイプから継承する必要がありますObject.create

var foo = function(){ };
foo.cat = "oliver";

var bar = Object.create(foo.prototype);

foo.prototype.dog = "rover";

console.log(bar.dog); // yields "rover", modifying the prototype of "foo" alter the members of "bar" instance
于 2013-10-12T21:46:57.173 に答える