返回
JavaScript 原始类型和对象之间的区别:扩展原始类型和访问器属性
前端
2024-01-17 05:14:21
JavaScript 中的原始类型和对象
在 JavaScript 中,数据类型分为两大类:原始类型和对象。
- 原始类型 :包括字符串、数字、布尔值、undefined 和 null。这些类型的值是不可变的,这意味着它们不能被改变。
- 对象 :包括数组、函数和对象字面量。这些类型的值是可变的,这意味着它们可以被改变。
JavaScript 中的原始类型和对象之间的主要区别在于,原始类型的值是不可变的,而对象的值是可变的。这意味着,如果我们改变一个原始类型的值,那么原始类型本身不会改变,而只会创建一个新的原始类型。但是,如果我们改变一个对象的值,那么对象本身就会改变。
为原始类型添加属性或方法
JavaScript 中的原始类型不能直接添加属性或方法。但是,我们可以使用扩展运算符(...)来创建一个新的对象,该对象包含原始类型的值以及我们想要添加的属性或方法。
例如,以下代码创建一个新的字符串对象,该对象包含字符串值 "Hello" 以及一个名为 "length" 的属性,该属性的值为字符串的长度:
const str = "Hello";
const newStr = {...str, length: str.length};
console.log(newStr); // {0: "H", 1: "e", 2: "l", 3: "l", 4: "o", length: 5}
访问器属性
JavaScript 中的访问器属性允许我们定义一个属性,该属性的值可以通过一个 getter 方法或一个 setter 方法来访问或设置。
例如,以下代码定义了一个名为 "name" 的访问器属性,该属性的值可以通过 "getName" 方法来访问,可以通过 "setName" 方法来设置:
const person = {
_name: "John Doe",
get name() {
return this._name;
},
set name(value) {
this._name = value;
}
};
console.log(person.name); // John Doe
person.name = "Jane Doe";
console.log(person.name); // Jane Doe
结论
JavaScript 中的原始类型和对象之间的主要区别在于,原始类型的值是不可变的,而对象的值是可变的。我们可以使用扩展运算符(...)来创建一个新的对象,该对象包含原始类型的值以及我们想要添加的属性或方法。JavaScript 中的访问器属性允许我们定义一个属性,该属性的值可以通过一个 getter 方法或一个 setter 方法来访问或设置。