2
現在、私は 'Object-Oriented JavaScript'を読んでいます。 さらに、私はその本からの例題を実行しているときに困ったことに遭遇しました。以下JavaScriptプロトタイプの問題
コードサンプルである:
var Dog = function() {
this.tail = true;
};
var benji = new Dog();
var rusty = new Dog();
Dog.prototype.say = function() { return "Woof!"; };
benji.say();
rusty.say();
Dog.prototype = {
paws: 4,
hair: true
};
Dog.prototype.constructor = Dog;
var lucy = new Dog();
lucy.say();
本質的に、アイデアは、以下の作業有することである。
- はconsole.log(lucy.sayを())。
- console.log(benji.paws);
- 明白な - lucy.say();不思議なこと
など
、私は「T」に、しかし無駄に例をコピーしました。 誰かが少し光を当てることができたら、私は感謝以上のものになるでしょう。
Dog.prototype = {
paws: 4,
hair: true
};
を行うことにより
乾杯
"ヒカップ"とは何ですか?奇妙なことは何ですか? –
本から引用:古いオブジェクトは新しいプロトタイプのプロパティにアクセスできないことが判明しました。彼らはまだ古いプロトタイプオブジェクトを指し示す秘密のリンクを保持しています。最も混乱する部分は、コンストラクタのプロトタイプを参照するときです。 typeof lucy.constructor.prototype.paws "undefined" typeof benji.constructor.prototype.paws "番号 " 上記のすべての予期しない動作が修正されました: Dog.prototype = {paws:4、hair:true}; Dog.prototype.constructor = Dog; 注:プロトタイプを上書きするときは、コンストラクタプロパティをリセットすることをお勧めします。 – domscripter
はい、 'lucy.constructor.prototype.paws'は修正されますが、' say'メソッドは 'lucy'にはなりません。 –