JavaScript 对象构造函数
对象构造函数
有时我们需要创建许多相同类型的对象。
要创建对象类型,我们使用对象构造函数。
建议将构造函数命名为首字母大写的名称。
对象类型 Person
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 不是函数
必须向构造函数原型添加新方法
示例
Person.prototype.changeName = function (name) {
this.lastName = name;
}
myMother.changeName("Doe");
自己尝试 »
注意
changeName() 函数将 name
的值分配给人员的 lastName
属性,用 myMother
替换 this
。
内置 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(){}; // 函数
自己尝试 »