【JavaScript学习笔记】JS的继承

JS的常见继承:

1,原型链继承(对象间的继承):

function Person() {
        this.name = "CRR";
    }
    function Chinese(){
        this.age = 18;
    }
    Chinese.prototype = new Person();
    var CRR = new Chinese();
    console.log(CRR.age + "+" + CRR.name);//得到被继承的属性;

确定原型与实例的关系,instanceof 和isPrototypeof()

只要是原型链中出现过的原型,都可以说是该原型链派生的实例的原型。

被继承的函数被称为超类型(父类,基类),继承的函数称为子类型(子类,派生),原型继承主要存在的问题:

1,字面量重写会与原型中断关系,使用引用类型的原型;2,子类型无法给超类型传参。

2,构造函数继承,类式继承

    function Parent(age) {
        this.name = ["mike","jack","simth"];
        this.age = age;
    }

    function children(age) {
        Parent.call(this,age);
    }

    var test = new children(21);
    console.log(test.age);

借用构造函数,使用call方法,虽然解决了传参的问题,但是没有原型,无法复用;

3,组合继承(原型链+借用构造函数)

   function Parent(age) {
        this.name = ["mike","jack","simth"];
        this.age = age;
    }
    Parent.prototype.run = function () {
        return this.name+ "are both" + this.age;
    }
    function Child(age) {
        Parent.call(this,age);
    }
    
    Child.prototype = new Parent();

就是在子类中使用call调用父类构造函数,同时将子类的prototype指向父类的实例;

使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值