原型模式

优质
小牛编辑
115浏览
2023-12-01

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

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

将构造函数模式中的示例稍作改造,用 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);  // falseconsole.log(host.introduce === hostess.introduce);  // true

这回两个实例的 introduce() 方法是同一个函数,即构造函数 FamilyMember() 的成员方法是共享的。