返回

JavaScript 原始类型和对象之间的区别:扩展原始类型和访问器属性

前端

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 方法来访问或设置。