javascript實現繼承的幾種主要方法

2021-09-12 17:04:20 字數 1450 閱讀 5687

//1.原型鏈繼承

var supclass = function(name, ***)

}supclass.prototype =

}/*var sonclass = function(name, ***)

console.log(sonclass.prototype)

sonclass.prototype = new supclass() //核心**

sonclass.prototype.constructor = sonclass//核心**

var son1 = new sonclass('red', 's')

son1.say()*/

//優點: 簡單,容易實現

//缺點: 多拷貝了乙份supclass的屬性過來,並且supclass的方法每生成乙個新的

// sonclass就要再重新拷貝乙份,造成了不必要的浪費

//2.建構函式繼承

/*var sonclass = function(name, ***, type)

var son1 = new sonclass('jay', 'man', 'goodman')

son1.say()*/

//優點: 簡單,容易實現,可以同時繼承多個父物件(三姓家奴)

//缺點: 只能繼承定義在父元素上的屬性或方法,而對於父元素原型物件上的屬性或方法

//則無法繼承

//3.混合繼承

/*var sonclass = function(name, ***, type)

sonclass.prototype = new supclass()

sonclass.prototype.constructor = sonclass

var son1 = new sonclass('jay', 'man', 'goodman')

son1.say()

son1.sayhi()*/

//優點: 幾乎完美

//缺點: 實現複雜,使用原型繼承的部分仍然沒有解決會多拷貝乙份父類屬性從而造成

//不必要的空間浪費的問題(可以在sonclass的prototype中看到被遮蔽的繼承自父類的屬性)

//4.寄生組合式繼承

//使用工廠函式將父元素的原型剝離出來單獨賦值給子元素的原型

function birth(f, s)

//組合式繼承

/*var sonclass = function(name, ***, type)

birth(supclass, sonclass)

var son1 = new sonclass('jay', 'man', 'goodman')

son1.say()

son1.sayhi()*/

//優點: 完美

//缺點: 實現困難

JavaScript的繼承實現方式

function a function b 測試 var testb new b alert testb.name json 2.實現繼承,方法二 prototype模式 function a function b b.prototype new a b.prototype.constructor ...

JavaScript實現繼承方式

student.prototype new person 得到乙個 person 例項,並且這個例項指向構造器的 prototype 屬性和呼叫了建構函式,因為呼叫的建構函式,而 student 只是乙個類,並沒有例項化,只為了繼承,呼叫建構函式建立乙個例項,引數的問題就不容易解決。例如 當 per...

JS實現繼承 JavaScript

定義乙個父類 定義乙個動物類 function animal name 原型方法 animal.prototype.eat function food 複製 1.原型鏈繼承核心 將父類的例項作為子類的原型 function cat cat.prototype new animal cat.proto...