构造函数 组合式继承

175 阅读1分钟

目录

组合式继承

图例效果


    使用了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

图例效果

更新中 ...