js継承
2124 ワード
原型引継ぎは、サブタイプのプロトタイプを親タイプに設定する例 を示している.欠点: サブクラスnewの例では、親の属性は分離されておらず、相互に影響を与え、同じアドレスを参照します. サブクラスは、親タイプにパラメータ を伝えることができません.
は、call()法で継承し、親クラスの属性と方法をサブクラスで継承し、親クラスにサブクラスがパラメータ を伝えることができると説明している.欠点:親のプロトタイプの属性とプロトタイプの方法を継承できない は上記の構造関数とプロトタイプ継承の機能を組み合わせる. 欠点:call()方法はすでに親類のすべての属性を手に入れました.後に原型を使う時も父類のすべての属性があります.同じアドレスの問題を解決できませんでした. は、父親の種類this宣言の属性/方法を引き継ぐために、構造関数(call)を借りることにより、 を使用する.サブタイププロトタイプを親タイププロトタイプとして設定し、親タイプのプロトタイプ宣言の属性/方法 を継承します.(注意)サブタイプのコントローラは、サブクラス を指します.寄生結合を用いて を実現した.
function Parent() {
this.name = 'parent'
}
Parent.prototype.getName = function() {
console.log(this.name)
}
function Child() {
this.name = 'child'
}
Child.prototype = new Parent() //
let child = new Child()
コンストラクタ継承function Parent() {
this.name = 'parent'
}
Parent.prototype.getName = function() {
console.log(this.name)
}
function Child() {
Parent.call(this
this.name = 'child'
}
let child = new Child()
コンビネーション継承function Parent() {
this.name = 'Parent'
}
Parent.prototype.getName = function() {
console.log(this.name)
}
function Child(value) {
Parent.call(this) //
this.name = 'Child'
}
Child.prototype = new Parent() //
let child = new Child()
寄生グループ引き継ぎfunction Parent() {
this.name = 'parent'
}
Parent.prototype.getName = function() {
console.log(this.name)
}
function Child() {
Parent.call(this)
this.name = 'child
}
Child.prototype = Parent.prototype
// Child.prototype = Object.create(Parent.prototype)
Child.prototype.contructor = Child
let child = new Child()
es 6クラス引継ぎclass Parent {
contructor() {
this.name = 'parent'
}
getName() {
console.log(this.name)
}
}
class Child extends Parent {
contrucotr() {
super()
this.name = 'child'
}
}
let child = new Child()