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);

 上面有两种方式,注释掉的也是一种方式效果:

父类没有实例化属性了

 

转载于:https://www.cnblogs.com/llauser/p/6718958.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值