几种继承方式

2016-12-21  本文已影响15人  last_edc

1.组合继承####

使用原型链继承超类的函数,利用构造函数继承超类的属性。

    function Super(name){
      this.name=name,
      this.colors = ['yellow','blue','green'],
    }
    Super.prototype.sayName = function(){
      alert(this.name);
    }
    function Sub(name,age){
      Super.call(this,'Json');
    }
    Sub.prototype = new Super();
    Sub.prototype.constructor = Sub;

2.原型式继承

    function object(o){
      function F(){}
      F.prototype = o;
      return new F();
    }  

可以使用ECMAScript5的Object.create()(第一个参数传用作新对象原型的对象,第二个传新对象的额外属性)

3.寄生式继承(即创建一个封装继承过程的函数)

    function createOther(o){
      var clone = Object.create(o);
      clone.sayName = function () {
        alert('hello');
      }
      return clone
    }  

4.寄生式组合继承(避免组合继承两次调用超类构造函数的性能问题,避免在原型上添加不必要的属性和方法)

    function inherit(Sub,Super){
      var pro = Object.create(Super.prototype);
      pro.constructor = Sub;
      Sub.prototype = pro;
    }
    function Super(name){
      this.name=name,
      this.colors = ['yellow','blue','green'],
    }
    Super.prototype.sayName = function(){
      alert(this.name);
    }
    function Sub(name,age){
      Super.call(this,'Json');
    }
    inherit(Sub,Super);
上一篇 下一篇

猜你喜欢

热点阅读