JavaScript の継承と、それを適切に行う方法をようやく理解できたようです。これが私のコードです:
function Human(eyes) {
this.eyes = eyes ? "Not blind" : "Blind";
}
Human.prototype.canSee = function () {
return this.eyes;
};
function Male(name, eyes) {
Human.call(this, eyes);
this.name = name;
}
Male.prototype = Object.create(Human.prototype);
var Sethen = new Male("Sethen", true);
console.log(Sethen.canSee()); //logs "Not blind"
私が理解していることから、継承用のプロトタイプオブジェクトを作成するために使用する方が、キーワードObject.create
を使用するよりもはるかに優れています。new
これは私の頭の中でいくつかの質問を提起します。
Male.prototype = Object.create(Human.prototype)
プロトタイプ チェーンはMale.prototype --> Human.prototype --> Object.prototype --> null
?- スーパークラスを呼び出すため
Male
に使用するコンストラクターでは、コンストラクターに目を渡すために、コンストラクターでもう一度目を渡す必要があります。これは面倒なように思えますが、これを行う簡単な方法はありますか?Human.call(this, eyes);
Male
Human
- どうしてこんなコードを目にすることがあるのでしょう
Male.prototype = new Human();
... これは間違っているようです。私たちがそれを行うと、実際に何が起こっているのですか??