首页 > 代码库 > js继承之四(寄生组合式继承)
js继承之四(寄生组合式继承)
组合式继承尽管很优秀,但是还是有一个地方算完美调用父类构造函数调用了两次也就是实例化了两个父类对象
从这个结果可以发现,父类实例中的属性和方法其实子类已经有了,再添加进来未免多此一举;所以这就是优化的点
function CarModel(c){ this.color=c||"白色"; this.arr=[1,2,3]; this.getColor=function(){ console.log(‘我的颜色是‘+this.color); }}CarModel.prototype.test="lla";function Car(brand){ CarModel.call(this);//借用构造函数 继承构造函数的属性 this.brand=brand; this.getBrand=function(){ console.log(‘我的品牌是‘+this.brand); }}Car.prototype=Object.create(CarModel.prototype); //原型链模式 继承原型对象上的属性/*(function(){ // 创建一个没有实例方法的类 var Super = function(){}; Super.prototype = CarModel.prototype; //将实例作为子类的原型 Car.prototype = new Super();})();*/var car1=new Car("丰田");console.log(car1);
上面有两种方式,注释掉的也是一种方式效果:
父类没有实例化属性了
js继承之四(寄生组合式继承)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。