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