美文网首页
Js面向对象继承

Js面向对象继承

作者: 光头小青蛙 | 来源:发表于2019-07-09 11:05 被阅读0次

    面向对象编程

    JavaScript是一个不完全面向对象的弱类型语言,它里面的数据都可以看成对象。JavaScript是通过原型(prototype)来实现面向对象编程。

    继承

    只有new的实例化对象才能拿到构造函数的所有的方法,包括原型对象上的。

    • 使用原型继承,缺点把私有的(构造函数内部定义的)和公共的(原型对象上定义的)全部放在了子构造函数的原型对象
    function Person(){
        this.name='小明';
    }
    function Study(){
        this.gender='男'
    }
    Person.prototype=new Study();
    var res=new Person();
    console.log(res.gender)
    
    • 使用call/apply继承,缺点只能拿到构造函数内部定义的属性和方法,拿不到原型上的属性方法。
    function Person(){
        Study.call(this)
        this.name='小明';
    }
    function Study(){
        this.gender='男'
    }
    Study.prototype.age=123
    var res=new Person();
    console.log(res,Study.prototype)
    
    • 利用空对象作为中介继承
    function Person(){
        this.name='小明';
    }
    function Study(){
        this.gender='男'
    }
    Study.prototype.age=12
    function F(){};
    F.prototype=Study.prototype;
    Person.prototype=new F();
    var res=new Person();
    console.log(res.age)
    

    相关文章

      网友评论

          本文标题:Js面向对象继承

          本文链接:https://www.haomeiwen.com/subject/cantkctx.html