js继承方法之构造函数继承(apply)

function Animal(name){
  this.name=name
  this.say=function(){
    console.log( name + ' miao miao miao' )
  }
  this.arr= [1];//解决了原型链继承,引用属性会共享的问题
}
Animal.prototype.eat = function(food){ //无法继承prototype里的属性
  console.log(this.name + '吃' + food)
}


function Cat(name){
  Animal.apply(this,arguments)
  
}

let final = new Cat('小猫');//可以向父类传参
final.arr.push(2);
let final2 = new Cat('大猫');

console.log(final.arr) //[1,2]
console.log(final2.arr)//[1]

有个不好的地方,就是子类都有父类函数的副本(父类里this的属性),影响性能。而且也不能通过prototype共享一些共同的方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,308评论 19 139
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,376评论 2 17
  • 昨天,一个一直关注着我的朋友在后台留言给我:“看了你的鸡汤文,我思考了两天以后,决定辞职,流浪,去远方,去想去的地...
    雨天在路上阅读 3,541评论 7 4