继承和实现继承的方法

(1)继承

继承描述了两个类之间的“is a kind of "关系。比如学生"是一种"人,老师"是一种"人,所以学生类和人类构成继承关系、老师类和人类构成继承关系。子类丰富了父类,让父类更具体,更细化。

(2)实现继承的方法

1)、通过原型链实现继承

让子类构造函数的prototype,指向父类的一个实例

2)、借用构造函数

在子类的构造函数的内部调用父类的构造函数,并使用call()绑定上下文

3)、组合继承(常用)

将通过原型链实现继承和借用构造函数实现继承这两个方法组合在一起,就叫组合继承

4)、原型式继承

通过Object.create()方法,可以根据指定的对象为原型创建出新对象

Object.create()的兼容性写法:

<script>
        // 道格拉斯·克罗克福德写的一个函数,面试常考
        //函数的功能是以o为原型,创建新对象
        // 第二个参数表示要添加的属性
        function object(o, c) {
            // 创建一个临时构造函数
            function F() {}
            // 让临时函数的prototype指向o,这样它new出来的对象,__proto__指向了o
            F.prototype = o;
            // 返回F的实例,用一个变量接收
            var result = new F();
            // 遍历要添加的属性c
            for (var k in c) {
                // 将c中的属性加入result中
                result[k] = c[k];
            }
            return result;
        }
        var obj1 = {
            a: 11,
            b: 12
        };
        var obj3 = {
            m: 22,
            n: 44
        };
        var obj2 = object(obj1, obj3);
        console.log(obj2.__proto__ === obj1); // true
        console.log(obj2.a); //11
        console.log(obj2.b); //12
        console.log(obj2.m); // 22
        console.log(obj2.n); // 44
    </script>

5)、寄生式继承(不常用)

6)、寄生式组合继承(不常用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值