构造函数模式
在像 JavaScript 这种没有类的概念的语言中,如果想创建特定的实例对象,可以通过在函数之前加上 new
关键字来实现。在调用构造函数时可以传入参数以初始化实例对象的属性值。用这种方式创建的实例对象的属性和方法是独立的,不与其他实例对象共享。
在 JavaScript 中,构造函数一般长这样:
function FamilyMember( name, age ) {
this.name = name;
this.age = age;
this.introduce = function() {
return 'My name is ' + this.name + '. I\'m ' + this.age + ' years old.';
}
}
其中,name
和 age
是成员属性,introduce()
是成员方法。
让我们来用「家庭成员」构造函数 FamilyMember()
来创建几个实例对象看看吧!
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); // false
由上例中的 ===
比较可以看出,两个实例对象 host
和 hostess
的 introduce()
方法是不同的,即构造函数 FamilyMember()
的成员方法不是共享的。