寄生组合式继承

来源:互联网 发布:fpga 保存数据 编辑:程序博客网 时间:2024/04/27 20:54
           //实现了对o的一次浅复制
          function object(o) {
             function F(){}
             F.prototype = o;
             return new F();
          }
          //subType:子函数名,superType:父函数名。
          function inheritPrototype(subType,superType){
             var o = object(superType.prototype);
             o.constructor = subType;
             subType.prototype = o;
          }
          //父函数,使用构造模式设置变量,原型模式设置方法。
          function animal(name) {
             this.name = name;
             this.data = ["1","2"];
          }
          animal.prototype.sayName = function() {
             alert("我叫"+this.name);
          };
          //子函数:构造模式
         function cat(name,age) {
            animal.call(this,name);
            this.age = age;
         }
         //寄生式模式
         inheritPrototype(cat,animal);
         //原型模式
         cat.prototype.action = function() {
            alert("我能吃" + this.age + "条鱼");
         };
         var cat1 = new cat("小花猫",1);
         var cat2 = new cat("小肥猫",3);
         cat1.sayName();         //我叫小花猫
         cat2.sayName();         //我叫小肥猫
         cat1.action();         //我能吃1条鱼
         cat2.action();         //我能吃3条鱼
         cat1.data.push("3");   
         alert(cat1.data);      //1,2,3
         alert(cat2.data);      //1,2
0 0