林秀栋的技术博客

设计模式(四) 原型模式

//通过原型链继承而产生的模式
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();