JavaScript 对象构造函数
用大写首字母来命名构造函数被认为是一种很好的做法。
对象类型(蓝图)(类)
前面章节中的例子比较有限,它们只创建了单个对象。
有时我们需要一个“蓝图“用于创建许多相同“类型”的对象。
创建“对象类型”的方法是使用 对象构造函数.
在上面的例子中, function Person()
是一个对象构造函数。
通过使用以下代码调用构造函数来创建相同类型的对象: new
关键词:
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
亲自尝试一下 »
这 这 关键词
在 JavaScript 中, this
是“拥有”代码的对象。
的价值 this
当用于对象时,即为对象本身。
在构造函数中 this
没有价值。它是新对象的替代品。this
当一个新的对象被创建时,将成为新的对象。
注意 this
不是变量。它是一个关键字。您不能更改this
.
向对象添加属性
向现有对象添加新属性很容易:
该属性将添加到 myFather。不会添加到 myMother。(不会添加到任何其他人对象)。
向对象添加方法
向现有对象添加新方法很容易:
该方法将被添加到 myFather。而不是 myMother。(不会添加到任何其他 person 对象)。
向构造函数添加属性
您不能像向现有对象添加新属性那样向对象构造函数添加新属性:
要向构造函数添加新属性,必须将其添加到构造函数中:
例子
函数 Person(名字,姓氏,年龄,眼睛颜色) {
这个.firstName = first;
这个.lastName = 最后一个;
这个.年龄=年龄;
这个.眼睛颜色 = 眼睛颜色;
this.nationality = "英语";
}
亲自尝试 »
这样对象属性就可以有默认值。
向构造函数添加方法
你的构造函数也可以定义方法:
例子
函数 Person(名字,姓氏,年龄,眼睛颜色) {
这个.firstName = first;
这个.lastName = 最后一个;
这个.年龄=年龄;
这个.眼睛颜色 = 眼睛颜色;
这个.name = 函数(){
返回 this.firstName + " " + this.lastName;
};
}
亲自尝试 »
您不能像向现有对象添加新方法一样向对象构造函数添加新方法。
向对象构造函数添加方法必须在构造函数内部完成:
例子
函数 Person(名字,姓氏,年龄,眼睛颜色){
这个.firstName = firstName;
这个.姓氏 = 姓氏;
这个.年龄=年龄;
这个.眼睛颜色 = 眼睛颜色;
this.changeName = 函数(名称){
这个.lastName = 名字;
};
}
changeName() 函数将 name 的值分配给该人的 lastName 属性。
JavaScript 通过“替换”来知道你在谈论哪一个人 这 和我的母亲.
内置 JavaScript 构造函数
JavaScript 具有用于本机对象的内置构造函数:
new String() // 一个新的 String 对象
new Number() // 一个新的 Number 对象
new Boolean() // 一个新的布尔对象
new Object() // 一个新的 Object 对象
new Array() // 一个新的 Array 对象
new RegExp() // 一个新的 RegExp 对象
new Function() // 一个新的 Function 对象
new Date() // 一个新的 Date 对象
亲自尝试 »
这 Math()
对象不在列表中。Math
是一个全局对象。new
关键字不能用于Math
.
你可知道?
如上所示,JavaScript 具有原始数据类型的对象版本 String
, Number
, 和 Boolean
。但是没有理由创建复杂对象。原始值要快得多:
使用字符串文字 ""
代替new String()
.
使用数字文字 50
代替new Number()
.
使用布尔文字 true / false
代替new Boolean()
.
使用对象字面量 {}
代替new Object()
.
使用数组文字 []
代替new Array()
.
使用模式文字 /()/
代替new RegExp()
.
使用函数表达式 () {}
代替new Function()
.
例子
let x1 = ""; // 新的原始字符串
let x2 = 0; // 新的原始数字
let x3 = false; // 新的原始布尔值
const x4 = {}; // 新的 Object 对象
const x5 = []; // 新的数组对象
const x6 = /()/ // 新的 RegExp 对象
const x7 = function(){}; // 新函数
亲自尝试 »
字符串对象
通常,字符串被创建为原语: firstName = "John"
但是字符串也可以使用以下方式创建对象: new
关键词:firstName = new String("John")
在本章中了解为什么不应将字符串创建为对象 JS 字符串.
数字对象
通常情况下,数字被创建为原始数: x = 30
但是数字也可以使用 new
关键词:x = new Number(30)
在本章中了解为什么不应将数字创建为对象 JS 数字.
布尔对象
通常,布尔值被创建为原语: x = false
但布尔值也可以使用以下方式创建为对象: new
关键词:x = new Boolean(false)
了解为什么布尔值不应在本章中创建为对象 JS 布尔值.