JavaScript之面向对象的继承浅析2

来源:互联网 发布:管家婆 远程数据库 编辑:程序博客网 时间:2024/06/05 08:03
  • 其他oop语言Java,C#,C++,PHP中的继承
    例如在PHP中的继承:
    <1> 对象的组成: 属性、方法
    <2> 继承对象的属性、方法
    <3> 继承步骤:先执行父级的构造函数;再添加自身的属性和方法

  • JavaScript中的继承(只谈组合继承)
    ①属性的继承: 构造函数的伪装 :.call() || .apply()

    ②方法的继承: 通过原型链
    父类实例化对象赋给子类原型对象 或 for-in循环 子类.prototype[i] = 父类.prototype[i]

    ③ 注意:在子类继承中,要先继承父类,然后再用原型方法写自己独有的方法,不然后写的话会覆盖掉子类的方法。

    //父类Person    function Person(name,sex){        this.name = name;        this.sex = sex;    }    Person.prototype.sayName = function(){        alert("My Name is " + this.name);    }    Person.prototype.saySex = function(){        alert("My Sex is " + this.sex);    }    //Worker子类继承    function Worker(name,sex,job){        //此处用call方法来继承Person类中的属性,说穿了就是继承name和sex        Person.call(this,name,sex);        //学名:  构造函数的伪装!!!        this.job = job;    }    //此处直接通过原型继承父级Person类中方法    //Worker.prototype = Person.prototype;     学名:原型链!注意:其中涉及了对象的引用,有问题    //如果用上述直接引用父类的话 会对父类造成影响,所以为了不影响父类,不能采用上述方法用for-in循环来做    for(var i in Person.prototype){        Worker.prototype[i] = Person.prototype[i];    }    //再添加自身(子类(Worker类))的方法    Worker.prototype.showJob = function(){         alert(this.job);    }
0 0
原创粉丝点击