构造函数模式

在像 JavaScript 这种没有类的概念的语言中,如果想创建特定的实例对象,可以通过在函数之前加上 new 关键字来实现。在调用构造函数时可以传入参数以初始化实例对象的属性值。用这种方式创建的实例对象的属性和方法是独立的,不与其他实例对象共享。

在 JavaScript 中,构造函数一般长这样:

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

其中,nameage 是成员属性,introduce() 是成员方法。

让我们来用「家庭成员」构造函数 FamilyMember() 来创建几个实例对象看看吧!

  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); // false

由上例中的 === 比较可以看出,两个实例对象 hosthostessintroduce() 方法是不同的,即构造函数 FamilyMember() 的成员方法不是共享的。