JS實現繼承的常用方法

2022-07-24 09:54:08 字數 1473 閱讀 5742

1、建構函式繼承

function parent(name)

parent.prototype.saihi=function()

function child(name,age,gender)

let child=new child("

王磊",20,"男"

) console.log(child.name);

//王磊

child.sayhi(); // uncaught typeerror:child.sayhi is not a function

缺點:只能解決屬性的繼承,使用屬性的值不重複,但是父級類別的方法不能繼承

2、原型鏈繼承

function parent(name,gender)

parent.prototype.eat=function()

function child(age)

child.prototype=new parent("

李白","男"

);

var child=new child(20

);

var child2=new child(30

); child.eat();//(『晚餐時間到』)

console.log(child.list,child2.list);

//[1,2,3] [1,2,3]

child.list.push(4

) console.log(child.list);

//[1,2,3,4]

console.log(child2.list);//

[1,2,3,4]

缺點:因為child的原型物件都是new parent,所以例項化出來的物件的屬性都是一樣的,而且parent上面的引用型別只要有乙個例項物件修改了,其他也會跟著修改.因為他們原型物件都是共用的

3、組合繼承

function person(school)

person.prototype.skill=function()

function student(school,name,age,gender)

student.prototype=person.prototype;

let student=new student("

廣鐵一中

","王菲菲

",14,"女"

); console.log(student.prototype===person.prototype)

console.log(student.constructor)

缺點:父類的原型物件呼叫了兩次,沒有必要,而且student例項的建構函式是來自於person

js的繼承實現方法

一 原型鏈 利用prototype實現繼承,prototype物件是個模板,要例項的物件都是以這個模板為基礎,它的任何屬性和方法都被傳遞給那個類的所有例項,原型鏈利用這種功能來實現繼承機制。如果利用原型方式實現繼承,例項如下 原型鏈function classa classa.prototype.c...

JS實現繼承的方法

一 物件冒充 function parent username function child username,password var parent newparent liuxiaowei var child newchild admin 123456 parent.hello liuxiaow...

JS實現繼承之最常用的組合繼承

使用建構函式方法和原型鏈方法都不能很好的實現繼承,他們各有優勢,也各有劣勢,如果把他們組合在一起,是不是可以各取所長,取長補短呢?答案是可以的,這就是組合繼承 function person skin person.prototype.run function function chinese na...