构造函数 “对象冒充继承“和 “call apply bind“

 这种继承方法 使用了call apply bind能够修改this指向的特点 进行了对象冒充 但是这种方法 子类无法获取父类的原型上的属性和方法

实现构造函数2 继承构造函数1的属性和方法

     // 构造函数1
        function Game(name, type) {
            this.name = name
            this.gameType = type
            this.say = function() {
                console.log('欢迎来到' + this.name);
            }
            this.run = function() {
                console.log(1);
            }
        }
// 构造函数2  2继承1
        function Role(roleName, age, sex) {
            this.roleName = roleName
            this.age = age
            this.sex = sex
            this.dance = function() {
                console.log(`我是${this.roleName},今年${this.age}了,我是${this.sex}性`);
            };
            //实现继承构造函数1的属性和方法
            console.log(this); //是 Role 当前对象

            //1. bind方法需要小括号来调用第一个小括号参数是:函数上下文的对象,第二个小括号调用里面是参数列表,
            // Game.bind(this)('王者荣耀', '手游')

            //2.  call 方法第一个参数:第一个是作为函数上下文的对象,但是后面传入的是一个参数列表,而不是单个数组。
            // Game.call(this, '王者荣耀', '手游')

            //3. apply方法传入两个参数:第一个是函数上下文的对象,第二个是一个作为函数参数所组成的数组
            Game.apply(this, ['王者荣耀', '手游'])

        }
        let role = new Role('李白', '17', '男'); //实例一个对象 new创建传参
        console.log(role); //所有属性
        role.say(); //继承了Game的say方法
        role.dance(); //实例过后才可以调方法和属性
        role.run();

效果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彩色之外

你的打赏是我创作的氮气加速动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值