发表于: 2016-09-07 00:17:46

1 1792


今天做的事:了解原型继承,看Canvas

遇到的问题:

采用寄生组合式继承的原因是因为会出现两次调用超类型的过程
  1. function SuperType(name){
  2.            this.name = name;
  3.            this.colors = ["red", "blue", "green"];
  4.        }
  5.        
  6.        SuperType.prototype.sayName = function(){
  7.            alert(this.name);
  8.        };
  9.        function SubType(name, age){  
  10.            SuperType.call(this, name);//第二次调用
  11.            
  12.            this.age = age;
  13.        }
  14.        SubType.prototype = new SuperType();//第一次调用
  15.        SubType.prototype.constructor=SubType
  16.        SubType.prototype.sayAge = function(){
  17.            alert(this.age);
  18.        };
  19.        
  20.        var instance1 = new SubType("Nicholas", 29);
  21.        instance1.colors.push("black");
  22.        alert(instance1.colors);  //"red,blue,green,black"
  23.        instance1.sayName();      //"Nicholas";
  24.        instance1.sayAge();       //29
所以后来又出现了寄生组合式继承
但是疑惑一点
将上方组合继承的第11行改为
  1. SubType.prototype = SuperType.prototype
这样和寄生式构造函数有什么区别呢?



返回列表 返回列表
评论

    分享到