首页 > 代码库 > js继承之一(借用构造函数)
js继承之一(借用构造函数)
现在,已经知道了原型对象,原型链的实现,原型链式继承的缺陷;那么如何避免这个缺陷?
在子类中借用父类的构造函数
//定义一个CarModel类function CarModel(c){ this.color=c||"白色"; this.arr=[1,2,3]; this.getColor=function(){ console.log(‘我的颜色是‘+this.color); }}//car类有自己的属性,比如品牌function Car(brand){ CarModel.call(this);//借用父类的构造函数 this.brand=brand; this.getBrand=function(){ console.log(‘我的品牌是‘+this.brand); }}//car类需要继承自carmodel,汽车共有的属性color放在carmodel上Car.prototype=new CarModel();var car1=new Car("丰田");console.log(car1);
结果:
达到的效果相当于,子类拷贝了一份父类的方法和属性,加上自己的方法和属性;
优点:
- 解决了原型链式继承中,修改父类引用属性的问题
- 能够向父类构造函数传递参数了
缺点:
- 实例并不是父类的实例,只是子类的实例!
- 无法实现函数复用,每个子类都有父类实例函数的副本
js继承之一(借用构造函数)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。