//通过原型链继承而产生的模式
var a = function(s){ //把一些相同的基层方法与属性放在父类
this.s = s;
}
//有些方法计算复杂,每次new都重新计算一次开销大,可以放在原型中
a.prototype = {
x: function(){ }
}
var aa1 = function(s){
a.call(this, s);
}
aa1.prototype = new a();
aa1.x();
//原型模式更多的是用在对对象的创建中。
//比如创建对象比较复杂,需要多个new,耗时长,性能浪费,可以用复制这些对象的属性和方法,而不用new
function pe(){
var F = function(){},
args = arguments,
i = 0,
len = args.length;
for(; i < len; i++){
for(var j in args[i]){
//将这些属性复制到缓存类原型中
F.prototype[j] = args[i][j];
}
}
//返回缓存类实例
return new F();
}
var penguin = pe({
speed: 20,
swim: function(){}
},{
run: function(){}
})
penguin.swim();
penguin.run();