美文网首页
js高级程序设计笔记14

js高级程序设计笔记14

作者: ycyc1996 | 来源:发表于2018-04-04 00:55 被阅读0次

    继承

    1.确定原型与实例的关系
    
    a instacheof Object //true
    
    

    2.借用构造函数继承

    function SuperType(){
      ...
    }
    
    function SubType() {
      SuperType.call(this,a,b,c...);
      //在继承的类的构造函数中调用超类的构造方法,得到相同的实例属性
    }
    
    3.组合继承
    function SuperType(){
      ...
    }
    
    function SubType(age) {
      SuperType.call(this,a,b,c...);
      ths.age = age
    }
    
    4.原型式继承
    function object(o){
      function F(){}
      F.prototype = o;
      return new F();
    }
    
    var person = {
      name :  'Tom',
    }
    
    var a = object(person)
    
    //ES5 var a = Object.create(person,{
      name: 'Petter',
    })
    
    5.寄生式继承
    function createAnother(o){
      var o1 == object(o);
      o1.sayHi = function(){
        alert('  h i')
      }
    
      return o1;
    }
    
    //寄生式继承是对原型式继承的一种增强
    
    6.组合寄生
    function SubType(age){
      SuperType.call(this,a,b,c)
      this.age = age;
    }
    function inheritPrototype(subType,superType){
      var p = object(superType.prototype) //创建一份原型对象的副本
      p.constructor = SubType;
      SubType.prototype = p;
      //这样SubType()就指向了超类的一个副本,好处是只需要调用一次构造函数,无需创建额外的对象
      
    }
    

    相关文章

      网友评论

          本文标题:js高级程序设计笔记14

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