私はJavaScriptのプロトタイピングと継承の可能性について頭を悩ませようとしていますが、確かに何かが欠けています。単純なコンストラクター (関数 Counter()) から始めましょう。単純なプロパティとオブジェクトのインスタンス化を追加します。
function Counter() { this.a = "first"; };
Counter.prototype.b = "second";
var counter = new Counter();
この時点で、counter.a
「first」をcounter.b
返し、「second」を返します。counter.c
もちろんundefined
、どちらも理解できます。コンストラクターのプロトタイプに別のプロパティを追加しましょう。
Counter.prototype.c = "third";
現在、counter.c
「3 番目」が返されます。しかし...気が変わったので、これらのプロパティを取り除きましょう。
Counter.prototype = {};
簡単なロジックを使用して、counter
プロトタイプのprototype
プロパティを上書きすると、counter
以前に Counter.prototype に追加したプロパティが失われます。しかし、そうではありませんcounter.c
。「3 番目」を返します。私はここで迷っています。それでは...値を上書きしてみましょう:
Counter.prototype.c = "fourth hohoho";
何も変わらず、counter.c は引き続き「second」を返します。
プロパティの削除に失敗したのはなぜですか? 私は何が欠けていますか?