目录
使用了call apply bind能够修改this指向的特点 进行了对象冒充
但是这种方法 子类无法获取父类的原型上的属性和方法,所以组合式继承,手动在原型上添加名字和方法
组合式继承
将游戏名称和游戏地图继承在游戏角色上并挂载到原型
function Game(name) { //被继承 1
//游戏名称
this.name = name
}
Game.prototype.play = function() { //在原型上添加play方法
console.log('欢迎进入' + this.name)
}
function Map(mapName, num) { //被继承 2
//地图名字 地图数量
this.mapName = mapName
this.num = num
}
function Role(roleName, hit, sex) { //要继承的函数
//角色信息
this.roleName = roleName
this.hit = hit
this.sex = sex
Map.call(this, '召唤师峡谷', 3) //给地图的信息 this指向函数中的对象
}
Role.prototype = new Game('英雄联盟') //实例化Game(游戏名称)赋值Role
Role.prototype.constructor = Role
let role = new Role('李白', '70', '男') //将Role实例化
console.log(role); //继承了游戏名称,游戏地图,并且在原型上挂载了Role
图例效果
更新中 ...