ES5一行代码实现继承

继承

  • 原型继承
  • 私有属性继承

假设要实现一个飞机大战的游戏

  • 有运输飞机和普通飞机两种
  • 飞机有共有的方法
Plane.prototype.fly = function (){
	console.log('fly')
}
function Plane(name,blood) {
	this.name = name || '普通飞机';
	this.blood = blood || 100;
}

继承私有属性

借用构造函数

Transport.prototype.tran = function(){
	console.log("运输")
}
function Transport(){
	Plane.apply(this,arguments)//调用Plane的构造函数
}

测试

var T1 = new Transport("运输飞机",300)
console.log(T1)//Transport {name: "运输飞机", bloor: 100}

继承原型

  • 共享原型Transport.prototype = Plane.prototype;

共享原型导致普通飞机拥有了运输的功能,

  • 重置原型,使原型成为Plane对Transport.prototype = new Plane();

会使Transport的constructor变成Plane的

  • 圣杯模式
//使用中介函数,最后将constructor重置
var temp = function(){}
temp.prototype = new Plane();
Transport.prototype = temp.prototype;
Transport.prototype.constructor = Transport

推荐

  • 使用__proto__属性Transport.prototype.__proto__ = Plane.prototype;
  • Object.setPrototypeOf(Transport.prototype,Plane.prototype) es6API
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值