js的继承
一、js继承的概念
减少代码量,使代码可以循环复用
二、继承的进化史
1、封装函数来实现两个实例对象间的继承
//原始的对象实例 var ljc = { name:"李嘉诚", money:"10", house:["别墅","洋房","草房"] } var lzk = { name:"李泽楷" } //封装函数进行继承的操作 function extend(parent,child){ for(var k in parent){ if(!child[k]) child[k] = parent[k]; } } extend(ljc,lzk);
2、通过原型来进行继承
//通过原型来进行继承的实现 //父对象构造函数 function Person() { this.name = "zd"; this.age = 13; } //子对象的构造函数 function Student() { this.score = 30; } //实现 Student.prototype = new Person(); Student.prototype.constructor = Student;
3、如果父构造需要传递参数的时候,则会出现问题。因为在子构造函数中无法改变this的指向。
由此我们引入call的函数调用方式
//通过call的方式进行继承 //父对象构造函数 function Person(name,age) { this.name = name; this.age = age; } //子对象的构造函数 function Student(score) { this.score = score; } //改造子构造函数 function Student(name,age,score) { Person.call(this,name,age); this.score = score; }