1. 什么是构造函数?
在JavaScript中,构造函数是一种用于创建特定类型对象的函数。构造函数可用于创建多个相似对象,这些对象通常具有相似的属性和方法。构造函数可以在运行时动态创建对象,并为对象赋予属性和方法。
function Person(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
let john = new Person('John', 25, 'Male');
如上所示,我们已经创建了一个构造函数Person,该构造函数接受三个参数并将其保存为对象的属性。使用关键字new创建一个对象之后,我们就创建了一个名为john的Person对象,该对象具有三个属性:name,age和gender。
2. JavaScript中的构造函数
2.1 构造函数的特征
JavaScript中构造函数的特征:
构造函数的名称以大写字母开头。
使用关键字new创建对象。
构造函数中的this指向新创建的对象。
返回值默认为新创建的对象。
2.2 使用new关键字创建对象
使用关键字new在JavaScript中创建对象时,会按照以下步骤执行:
创建一个空对象。
设置新对象的构造函数。
将新对象赋值给构造函数中的this关键字。
如果构造函数有返回语句,请返回返回值;否则返回新创建的对象。
function Person(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
let john = new Person('John', 25, 'Male');
如上所示我们使用关键字new创建了Person对象。
2.3. 带有原型的构造函数
JavaScript中的每个对象都有一个原型。可以通过为构造函数添加prototype对象来设置对象的原型。使用原型可以使所有由构造函数创建的对象共享相同的属性和方法。在JavaScript中,如果对象尝试访问其自身没有的属性或方法,它会尝试访问其原型中的属性或方法。
function Person(name, age, gender, interests) {
this.name = name;
this.age = age;
this.gender = gender;
this.interests = interests;
}
Person.prototype.bio = function() {
return this.name + ' is ' + this.age + ' years old. He likes ' + this.interests.join(', ') + '.';
};
let john = new Person('John', 25, 'Male', ['coding', 'sports', 'travel']);
console.log(john.bio());
如上所示,我们向Person对象的原型添加了一个方法bio,该方法将对象的属性转换为字符串。通过使用原型,可以保证对象创建后仍可以访问共享方法。
3. 结论
构造函数是JavaScript中用于创建特定类型对象的函数。使用构造函数可以创建多个相似的对象,并为对象赋予属性和方法。通过为构造函数添加prototype对象,可以设置对象的原型,使所有由构造函数创建的对象共享相同的属性和方法。使用构造函数可以方便地创建复杂的JavaScript代码,它们可以与其他函数和对象一起使用,组合成强大的应用程序。