ES5和ES6的繼承

2021-09-27 06:32:56 字數 1218 閱讀 4640

在es6之前,js的函式和物件是混在一起的,通過new呼叫函式,就是把函式當作物件,建立例項。

funciton person(name,age)

person.prototype.getname = function()

person.prototype.setname = function(name)

var p = new person('張三',13)

p.setname('***')

var name = p.getname()

1)屬性定義在函式中,每個例項物件不同

2)方法定義在原型上,例項物件共享

es6引入了class、constructor可以明確定義類

class person()

getname()

setname(name)

}

使用class關鍵字定義類,屬性定義在constructor中,方法定義在類中

es5中繼承是借用了父類建構函式和原型實現的

/*student 繼承 person*/

function student(name,age,lev)

sub.prototype = object.create(super.prototype);

student.prototype.constructor = student

1)首先在子類中呼叫了父類的建構函式,並繫結為子類的this,這樣讓子類例項可以得到父類例項的屬性

2)讓子類的原型指向父類的原型,讓子類例項可以擁有父類原型上定義的方法

3)修正原型的constructor為子類建構函式

也可以這樣繼承原型:student.prototype = new person(),這樣繼承的原型"不乾淨",不僅繼承到父類原型上的方法,也繼承了父類例項的方法。

function person() 

}

es6中class定義的類,可以通過extends實現繼承,使用super呼叫父類建構函式,比es5繼承方便的多

class student 

getlev()

}

細節詳情參見:es6-class繼承

ES5和ES6的繼承

建構函式 function obj uname,age 建立例項物件 var test newobj uname 18 使用方法 test.method obj.boy 建構函式名字的首字母要大寫,且與new一起使用 建構函式中的屬性方法被叫做成員。其中 1 靜態成員 在建構函式本身上新增的成員,如...

ES5和ES6的繼承

es5繼承 建構函式 原型和例項的關係 每乙個建構函式都有乙個原型物件,每乙個原型物件都有乙個指向建構函式的指標,而每乙個例項都包含乙個指向原型物件的內部指標,1 function supertype 4 supertype.prototype.getsupervalue function 7 fu...

es5繼承與es6繼承

es5中的繼承方式 1.原型鏈繼承 缺點 1.建立例項時無法像父類建構函式傳遞引數 2.因為指定了原型,所以不能實現多繼承 3.父類建構函式上的屬性被所有子類共用,給原型上的屬性賦值會改變其他子類的屬性值 es5 const parent function name,age parent.proto...