介绍
原型模式是创建型模式的一种,其特点在于通过复制一个已经存在的实例来返回新的实例。被复制的实例就是我们所称的原型,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。
对于原型模式,我们可以利用JavaScript特有的原型继承特性去创建对象的方式,也就是创建的一个对象作为另外一个对象的prototype属性值。原型对象本身就是有效的利用了每个构造器创建的对象,例如,如果一个构造函数的原型包含了一个name属性,那么通过这个构造函数创建的对对象都会有这个属性。
let _obj = {
name:'1',
getName(){
console.log(this.name)
}
}
let _newObj = Object.create(_obj);
console.log(_newObj.name) // 1
如果你不想使用Object.create
实现原型模式,可以继续往下看
let _obj = {
init(name) {
this.name = name;
},
getName() {
console.log(`我的名字叫${this.name}`)
}
}
function fn(name) {
function Fn(){};
Fn.prototype = _obj;
let _f = new Fn();
_f.init(name);
return _f
}
let _newFn = fn('小明');
_newFn.getName(); // 我的名字叫小明