//实现了对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
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