JS 组合寄生式继承

 <script>
        /*
            1、创建一个空对象
            2、把构造函数的prototype指向这个对象的__proto__
            3、把构造函数的执行上下文(this) 只想这个对象
            4、执行构造函数的函数
            5、返回这个对象
        */
        function SuperType(name) {
            this.name = name
        }
        SuperType.prototype.getName = function () {
            console.log('我的名字是:' + this.name);
        }

        function SubType(name, age) {
            SuperType.call(this, name)
            this.age = age
            this.say = function () {
                console.log('我今年已经:' + this.age + '岁了');
            }
            this.changeName = function (name) {
                this.name = name
            }
        }

        function inheritPrototype(subType, superType) {
            function F() {
                this.constructor = subType
            }
            F.prototype = superType.prototype
            subType.prototype = new F()
        }
        inheritPrototype(SubType, SuperType)
        let sal1 = new SubType('张三', 22)
        console.log(sal1);
        sal1.getName() //我的名字是:张三
        sal1.say() //我今年已经:22岁了
        sal1.changeName('李四')
        sal1.getName() // 我的名字是:李四
        sal1.say() //我今年已经:22岁了
    </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值