原型模式
目标
以一个存在的对象为模板创建一个新的对象。
何时使用
- 新建对象的初始化过程非常昂贵,所以用克隆的方式。
- 希望创建一样的对象。
- 对象中的状态是有限的。
- 当要实例化的类是在运行时刻指定时,例如,通过动态装载。
- 当一个系统应该独立于它的产品创建,构成和表示时。
举例
1、资源优化场景。 2、类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等。 3、性能和安全要求的场景。 4、通过 new 产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。 5、一个对象多个修改者的场景。 6、一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。
代码
由于JavaScript是基于原型的语言,所以内置了原型模式。
var myCar = {
name: "Ford Escort",
drive: function () {
console.log( "Weeee. I'm driving!" );
},
panic: function () {
console.log( "Wait. How do you stop this thing?" );
}
};
// Use Object.create to instantiate a new car
var yourCar = Object.create( myCar );
// Now we can see that one is a prototype of the other
console.log( yourCar.name );
总结
Object.create可以参考