5

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これは私の頭の中でいくつかの質問を提起します。

  1. Male.prototype = Object.create(Human.prototype)プロトタイプ チェーンはMale.prototype --> Human.prototype --> Object.prototype --> null?
  2. スーパークラスを呼び出すためMaleに使用するコンストラクターでは、コンストラクターに目を渡すために、コンストラクターでもう一度目を渡す必要があります。これは面倒なように思えますが、これを行う簡単な方法はありますか?Human.call(this, eyes);MaleHuman
  3. どうしてこんなコードを目にすることがあるのでしょうMale.prototype = new Human();... これは間違っているようです。私たちがそれを行うと、実際に何が起こっているのですか??
4

1 に答える 1