• 原型模式

    原型模式

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

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

    将构造函数模式中的示例稍作改造,用 prototype 实现成员方法:

    1. function FamilyMember( name, age ) {
    2. this.name = name;
    3. this.age = age;
    4. }
    5. FamilyMember.prototype.introduce = function() {
    6. return 'My name is ' + this.name + '. I\'m ' + this.age + ' years old.';
    7. }

    创建两个 FamilyMember() 的实例并用 === 比较 introduce() 方法:

    1. var host = new FamilyMember('Ourai', 18);
    2. var hostess = new FamilyMember('Julia', 17);
    3. console.log(host.introduce()); // "My name is Ourai. I'm 18 years old."
    4. console.log(hostess.introduce()); // "My name is Julia. I'm 17 years old."
    5. console.log(host === hostess); // false
    6. console.log(host.introduce === hostess.introduce); // true

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