JS物件導向的繼承

2021-10-04 06:23:15 字數 2352 閱讀 9132

先介紹一下什麼是繼承

1、繼承是與 建構函式 相關的應用

2、是指讓乙個建構函式去繼承另乙個建構函式的屬性和方法

3、繼承是發生在兩個建構函式之間

下面分別從es5和es6提供的方法介紹一下繼承的常用方法

es5繼承常見方法

1、原型繼承

原型繼承1 - 原型物件繼承:

簡單,方便,易操作

但是,只能繼承原型身上的方法和屬性,不能繼承建構函式內的方法和屬性

//父建構函式

function parent()

parent.prototype.name = "parent";

parent.prototype.show = function()

//子建構函式

function child()

// 深拷貝

for(var i in parent.prototype)

var p = new parent();

p.show();

console.log(p.name);

var c = new child();

c.show();

console.log(c.name);

原型繼承2 - 原型鏈繼承:

1.更加的簡單,方便,易操作

2.不僅可以繼承原型身上的方法和屬性,而且還可以繼承建構函式中的方法和屬性

3.但是,不方便傳參

原理:// child的例項c —>proto—> child.prototype —> parent的例項 —>proto—> parent.prototype

//父建構函式

function parent(n)

this.name = n;

}parent.prototype.show = function()

//子建構函式

function child()

child.prototype = new parent();

var p = new parent("張三");

console.log(p)

p.show();

console.log(p.name);

var c = new child();

console.log(c);

c.show();

console.log(c.name);

2、借用建構函式繼承 建構函式多繼承

建構函式繼承(改變this指向繼承):

1.方便的傳參

2.還可以實現多繼承

3.但是,只能繼承建構函式內部的屬性或方法,不能繼承原型身上的屬性或方法

function ***()

function camera()

function tel()

function email()

function mobilephone(n)

var mp = new mobilephone("huawei p30");

console.log(mp);

3、組合繼承

混合繼承:建構函式繼承 + 原型繼承

1.略複雜

2.既可以繼承建構函式,又可以繼承原型

3.方便傳參

4.可以多繼承建構函式

5.注意:原型鏈繼承時,依然有引數隱患

function parent(s)

parent.prototype.show = function()

function child(s)

for(var i in parent.prototype)

child.prototype.show = function()

var p = new parent("大鑑定師");

p.show();

var c = new child("實習鑑定師");

c.show();

4、es6class繼承

es6的class繼承,原理就是:建構函式方式繼承 + 原型鏈繼承

class parent

show()

}//子建構函式繼承父建構函式

class child extends parent

}var p = new parent("大鑑定師");

p.show();

console.log(p);

var c = new child("實習鑑定師");

c.show();

console.log(c);

JS物件導向 繼承

參考博文 一 物件導向的繼承 1 解析 在原有物件的基礎上,略作修改,得到乙個新的物件,並且不影響原有物件的功能 2 如何新增繼承 拷貝繼承 屬性 call 方法 for in 繼承 子類不影響父類,子類可以繼承父類的一些功能 復用 屬性的繼承 呼叫父類的構造1函式 call 方法的繼承 for i...

js 物件導向 繼承

繼承 將方法的定義放在建構函式中,每建立乙個新物件,都會重複建立該方法一模一樣的副本,浪費記憶體。解決 如果多個子物件都要使用乙個相同的方法時,應該把這個方法放在一種原型物件中,建構函式中不再包含方法定義。原型物件 乙個型別中,專門為所有子物件集中儲存共有方法的物件。同一型別下多個子物件需要用乙個共...

JS 物件導向 繼承

實現繼承是 ecmascript 唯一支援的繼承方式,而這主要是通過原型鏈實現的建構函式 原型和例項的關係 每個建構函式都有乙個原型物件,原型有乙個屬性 constructor 指回建構函式,而例項有乙個內部指標 prototype 指向原型。建構函式 function father console...