ES5和ES6的繼承

2021-10-08 18:32:38 字數 2673 閱讀 8939

// 建構函式

function

obj(uname, age)

}// 建立例項物件

var test =

newobj

('uname',18

);// 使用方法

test.

method()

;//obj.*** =

'boy'

建構函式名字的首字母要大寫,且與new一起使用

建構函式中的屬性方法被叫做成員。其中:

(1)靜態成員:在建構函式本身上新增的成員,如***,靜態成員只能通過建構函式來訪問;

(2)例項成員:在建構函式內部通過this新增的,如uname、age、method,只能通過例項化的物件來訪問;

每乙個建構函式中都有乙個prototype原型物件,把不變的方法直接定義在prototype物件上,所有的例項物件就可以共享這些方法。

例項物件在構造時,本身會有乙個__proto__屬性指向prototype原型物件,這樣構造的例項物件就可以使用prototype建立的方法了。

// 建構函式

function

obj(uname, age)

obj.prototype.

method

=function()

obj.prototype.*** =

'boy'

// 建立例項物件

var test1 =

newobj

('uname',18

);var test2 =

newobj

('uname',19

);// 驗證兩個例項物件的儲存空間是一致的

console.

log(test1.__proto__===obj.prototype)

;// return true

console.

log(test1.

method()

===test2.

method()

);// return true

例項物件原型__proto__和建構函式原型物件prototype中都有constructor屬性,稱為建構函式,因為他指回建構函式本身。它主要用來記錄該物件引用哪個建構函式,可以讓原型物件指向原來的建構函式。
// 建構函式

function

obj(uname, age)

// 若以物件的方式建立方法,原來的constructor將會被覆蓋掉,因此需要用constructor指回建構函式(constructor: obj,)

obj.prototype =

, method2:

function()

}// 建立例項物件

var test =

newobj

('uname',18

);// 驗證是否指回obj

console.

log(obj.prototype.constructor)

;console.

log(test.__proto__.constructor)

;

繼承父類屬性

function

father

(uname, age)

function

son(uname, age, score)

繼承父類方法

function

father

(uname, age)

father.prototype.

money

=function()

function

son(uname, age, score)

// 繼承父類方法

son.prototype =

newfather()

;son.prototype.constructor = son;

// 建立obj類

class

obj// 新增方法

method()

}// 利用類建立物件

var test =

newobj

('name',18

);

class

father

// 新增父類的方法

father_method()

father_sum()

}class

sonextends

father

// 用super關鍵字呼叫父類的普通方法

son_method()

}// 利用類建立物件

var son =

newson(1

,2);

son.

father_method()

;son.

sum();

son.

son_method()

;

注意:

類中沒有變數提公升,因此必須先定義類,再進行例項化

constructor中的this指向的是例項物件,方法中的this指向的是呼叫者

ES5和ES6的繼承

在es6之前,js的函式和物件是混在一起的,通過new呼叫函式,就是把函式當作物件,建立例項。funciton person name,age person.prototype.getname function person.prototype.setname function name var p...

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...