原型模式

原型模式是创建型模式的一种,其特点在于通过「复制」一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的「原型」,这个原型是可定制的。

原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。

将构造函数模式中的示例稍作改造,用 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() 的成员方法是共享的。

results matching ""

    No results matching ""