js中的幾種繼承

2021-09-11 01:43:51 字數 2625 閱讀 1676

注:

//定義乙個父類

function animal()

}//原型鏈追加(繼承) 給原型方法裡面追加屬性和行為的

animal.prototype.eat=function();

//定義乙個子類

function dog()

}

一、原型鏈繼承(單繼承)

1.核心: 將父類的例項作為子類的原型繼承。

2.特點:非常純粹的繼承關係,例項是子類也是父類的例項。父類新增原型方法/原型屬性,子類都能訪問到。

3.缺點:要想為子類新增屬性和方法,必須要在new animal()這樣的語句之後執行,不能放到構造器中無法實現多繼承

建立子類例項時,無法向父類建構函式傳參。

var a=new animal(); //例項物件(造出乙個新東西)

dog.prototype=a; //d大寫 dog物件中有了animal的所有屬性

dog.prototype.color=function()

//例項化dog物件

var c=new dog();

c.name="哦多都";

c.age="3";

c.***="母";

console.log(c);

console.log(c.sleep());

console.log(c.play());

console.log(c.color());

console.log(c instanceof animal); //判斷c物件到a物件建構函式的型別是否一致

console.log(c instanceof dog);

二、構造繼承(多繼承)

1.核心:父類的例項複製給子類(沒用到原型)。

2.特點:建立子類例項時,可以向父類傳遞引數可以實現多繼承(call多個父類物件)。

3.缺點:例項只是子類的例項只能繼承父類的例項屬性和方法,不能繼承原型屬性/方法,無法實現函式復用。每個子類都有父類例項函式的副本,影響效能。

function animal(name,color,***,age,type)

}animal.prototype.solo=function ()

//另乙個父類

function rou(name)

}//定義乙個子類物件

function cat(name,color,***,age,type)

var c=new cat("小貓","白色","母",2,"貓");

console.log(c);

console.log(c.eat());

console.log(c instanceof cat);

console.log(c instanceof animal);

console.log(c instanceof rou);

animal.call(this,name,color,***,age,type);
//定義乙個父類

function animal()

//定義乙個子類

function dog()

三、例項繼承(單繼承)

1.特點:不限制呼叫方式,不管是例項化物件,返回的物件具有相同的效果

2.缺點:例項是父類的例項,不是子類的例項,不支援多繼承

/*先去定義乙個父類物件*/

function animal()

//定義乙個子類物件

function cat()

console.log(cat());

//直接呼叫方法0或者例項化物件

var c=new cat();

console.log(c);

/*先去定義乙個父類物件*/

function animal()

}animal.prototype.speed=function ()

//定義乙個子類物件

function cat()

var c=new cat();

console.log(c);

console.log(c.speed());

console.log(c instanceof cat);

console.log(c instanceof animal);

四、組合繼承

原型鏈繼承要放到子類例項之前。

/*先去定義乙個父類物件*/

function animal()

}animal.prototype.speed=function ()

//構造繼承

function rou()

}//定義乙個子類物件

function cat()

//構造繼承無法繼承原型屬性/方法,所以寫乙個原型繼承,可拿到speed

cat.prototype=new animal();

console.log(c.speed());

var c=new cat();

console.log(c);

console.log(c.eat());

js中的幾種繼承方式

js繼承有5種實現方式 1 繼承第一種方式 物件冒充 function parent username function child username,password var parent new parent zhangsan var child new child lisi 123456 pa...

js中實現繼承的幾種方式

function person var p1 new person var p2 new person console.log p1.say p2.say falseperson.prototype.say function person.prototype run function var o1 ...

幾種js的繼承方式

1 繼承第一種方式 物件冒充 function super username function sub username var supernew new super super var subnew new sub sub supernew.hello subnew.hello subnew.wo...