js 實現繼承的幾種方式

2022-02-18 17:03:46 字數 1800 閱讀 3024

//js中實現繼承的幾種方式

//實現繼承首先要有乙個父類,先創造乙個動物的父類

function animal(name)

}//動物的原型

animal.prototype.eat = function(food)

//1.例項繼承

var dog = new animal("大黃");

// console.log(dog.name);

// dog.eat("骨頭");

//用父類的建構函式例項化出來的例項物件就繼承了父類的屬性和方法

//缺點:

//2.上下文繼承,改變this的指向

function dog(name)

var dog = new dog("rose");

// dog.eat("fish");//報錯,不能繼承原型方法

//使用上下文的方法,改變this的指向,讓dog擁有animal的屬性

//缺點:只能繼承父類的例項屬性和方法,不能繼承父類的原型屬性和方法

//3.遍歷繼承

/* var cat = {};

var a = new animal("jj");

cat.prototype.lookhome = function()

for(var key in a)

cat.lookhome();

console.log(cat.name);

cat.shoot();

cat.eat("fish");*/

//使用迴圈遍歷的方法,把animal的屬性賦給cat,這樣cat就擁有了animal的屬性和方法

//4.原型鏈繼承

/* function cat(name)

cat.prototype = new animal();

var cat = new cat("kitty");

cat.shoot();

cat.eat("meat");//吃meat,沒有名字,不能給父類的建構函式傳參

console.log(cat.name);*/

//把父類的例項賦給子類的原型,這樣子類例項化出來的例項就擁有了父類的屬性和方法

//缺點:不能向父類的建構函式傳參,

//5.混合繼承

/* function cat(name)

cat.prototype = new animal();

cat.prototype.lookhome=function()

var cat = new cat("kitty");

cat.eat("fish");

cat.shoot();

cat.lookhome();

console.log(cat.name);*/

//結合上下文和原型鏈繼承,讓子類擁有父類的屬性和方法,也擁有原型方法

//缺點:如果要給子類新增自己的原型屬性和方法,必須放在繼承父類屬性的後面,放在繼承之前會

//被覆蓋

//6.另一種方式實現繼承

/* function cat()

}cat.prototype.lookhome = function()

cat.prototype.__proto__ = new animal();

var cat = new cat();

cat.eat("fish");

cat.sleep();

cat.lookhome();*/

//每乙個物件都有乙個__proto__的屬性,通過父類的建構函式的原型的__proto__屬性,繼承父類的屬性和方法,這樣不會覆蓋自己的原型方法

js實現繼承的幾種方式

一,js中物件繼承 js中有三種繼承方式 1.js原型 prototype 實現繼承 複製 如下 2.建構函式實現繼承 複製 如下 複製 如下 js手冊中對call的解釋 複製 如下 call 方法 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。call thisobj arg1 arg2 ar...

JS實現繼承的幾種方式

取自 1.js實現繼承的幾種方式 2.js 物件導向之繼承 多種組合繼承 js作為物件導向的弱型別語言,繼承也是其非常強大的特性之一。那麼如何在js中實現繼承呢?讓我們拭目以待。既然要實現繼承,那麼首先我們得有乙個父類,如下 定義乙個動物類 function animal name 原型方法 ani...

JS實現繼承的幾種方式

前言 js作為物件導向的弱型別語言,繼承也是其非常強大的特性之一。那麼如何在js中實現繼承呢?讓我們拭目以待。既然要實現繼承,那麼首先我們得有乙個父類,如下 定義乙個動物類 function animal name 原型方法 animal.prototype.eat function food 核心...