原型模式
原型模式是创建型模式的一种,其特点在于通过「复制」一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的「原型」,这个原型是可定制的。
原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。
将构造函数模式中的示例稍作改造,用 prototype
实现成员方法:
function FamilyMember( name, age ) {
this.name = name;
this.age = age;
}
FamilyMember.prototype.introduce = function() {
return 'My name is ' + this.name + '. I\'m ' + this.age + ' years old.';
}
创建两个 FamilyMember()
的实例并用 ===
比较 introduce()
方法:
var host = new FamilyMember('Ourai', 18);
var hostess = new FamilyMember('Julia', 17);
console.log(host.introduce()); // "My name is Ourai. I'm 18 years old."
console.log(hostess.introduce()); // "My name is Julia. I'm 17 years old."
console.log(host === hostess); // false
console.log(host.introduce === hostess.introduce); // true
这回两个实例的 introduce()
方法是同一个函数,即构造函数 FamilyMember()
的成员方法是共享的。