継承は実際には型の拡張です。ただし、JavaScript はプロトタイプ継承を採用しているため、非常に参考になる JS プロトタイプ継承の 4 つのステップとプロトタイプ継承図の概要に関する記事を以下の編集者が共有します。お役に立てれば幸いです。
1: JS プロトタイプ継承の 4 つのステップ
//js模拟类的创建以及继承 //动物(Animal),有头这个属性,eat方法 //名字这个属性 //猫有名字属性,继承Animal,抓老鼠方法 //第一步:创建父类 function Animal(name){ this.name = name; } //给父类添加属性方法 Animal.prototype.eat = function(){ console.log(this.name + " eating..."); } //第二步:创建子类 function Cat(name){ Animal.call(this,name); } //第三步:确定继承的关系 Cat.prototype = Object.create(Animal.prototype); //第四步:改造构造器 //改变了某个构造器的原型之后,紧接着的代码一定是改构造器 Cat.prototype.constructor = Cat; Cat.prototype.zhualaoshu = function(){ console.log(this.name + " 抓 老鼠"); } var mao = new Cat("猫"); mao.eat(); mao.zhualaoshu();
2: プロトタイプ継承図
下の写真が役立ちます理解するには
理解を定着させるために練習してください、
関数Fooの__protoの値はFoo.prototypeと同じですよね? | いいえ |
オブジェクトのプロトタイプは変更できますか?それが可能である理由と不可能な理由は何ですか?トップの建設業者は誰ですか? | Function() |
最上位のプロトタイプオブジェクトは誰ですか? | Object.prototype |
オブジェクトのコンストラクターメンバーはプロパティですか、それともメソッドですか? | メソッド |
関数には __proto__ がありますが、なぜですか?値は Object.prototype と同じですか? | はい、それは Function.prototype; |
すべてのコンストラクターの __proto__ は、対応するプロトタイプと等しいです | いいえ、 |
クラスの形式で継承を作成する 4 つの手順は何ですか? | 親クラスの作成——>サブクラスの作成——>継承関係の決定——>コンストラクタの変更 |
Functionのコンストラクタやプロトタイプの値は変更できますか? | |
Object.prototype === Object.__proto__ はできますか? | そうですよね |
Function.prototype === Function.__proto__? | 関数 F(){}; var f1 = new F();f1.__proto__ === Object.prototype ですか? |
関連おすすめ:
JSプロトタイプ継承の2つの方法の比較_基礎知識
JavaScriptプロトタイプ継承例の詳細な説明
以上がJS プロトタイプ継承の 4 つのステップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。