JavaScript 对象构造函数
对象构造函数
有时我们需要创建许多相同类型的对象。
要创建对象类型,我们使用 对象构造函数。
将构造函数命名为首字母大写被认为是良好的实践。
人员对象类型
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
自己动手 »现在我们可以使用 new Person()
创建许多新的 Person 对象。
示例
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
const mySister = new Person("Anna", "Rally", 18, "green");
const mySelf = new Person("Johnny", "Rally", 22, "green");
自己动手 »
属性默认值
赋予属性的值将是构造函数创建的所有对象的默认值
示例
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
自己动手试一试 »
向对象添加属性
向已创建的对象添加属性很简单
注意
新属性将添加到myFather中。不会添加到任何其他Person 对象。
向构造函数添加属性
你不能向对象构造函数添加新属性
要添加新属性,必须将其添加到构造函数原型中
构造函数方法
构造函数也可以有方法
示例
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.fullName = function() {
return this.firstName + " " + this.lastName;
};
}
自己动手试一试 »
向对象添加方法
向已创建的对象添加方法很简单
注意
新方法将添加到myMother中。不会添加到任何其他Person 对象。
向构造函数添加方法
您不能向对象构造函数添加新方法。
这段代码将产生 TypeError
示例
Person.changeName = function (name) {
this.lastName = name;
}
myMother.changeName("Doe");
TypeError: myMother.changeName is not a function
添加新方法必须通过构造函数原型实现
示例
Person.prototype.changeName = function (name) {
this.lastName = name;
}
myMother.changeName("Doe");
自己动手试一试 »
注意
changeName() 函数将 name
的值赋给人员的 lastName
属性,将 this
替换为 myMother
。
内置 JavaScript 构造函数
JavaScript 为所有原生对象都内置了构造函数
new Object() // 一个新的 Object 对象
new Array() // 一个新的 Array 对象
new Map() // 一个新的 Map 对象
new Set() // 一个新的 Set 对象
new Date() // 一个新的 Date 对象
new RegExp() // 一个新的 RegExp 对象
new Function() // 一个新的 Function 对象
自己动手试一试 »
注意
Math()
对象不在列表中。Math
是一个全局对象。new
关键字不能用于 Math
。
您知道吗?
使用对象字面量 {}
代替 new Object()
。
使用数组字面量 []
代替 new Array()
。
使用模式字面量 /()/
代替 new RegExp()
。
使用函数表达式 () {}
代替 new Function()
。
示例
""; // 原始字符串
0; // 原始数字
false; // 原始布尔值
{}; // 对象对象
[]; // 数组对象
/()/ // 正则表达式对象
function(){}; // 函数
自己动手试一试 »