在 JavaScript 中,对象是一组键值对的无序集合,其中键是字符串(或符号),值可以是任意类型。以下是一些常用的操作对象的方法:
-
Object.keys(obj):
- 返回一个包含对象自身所有属性(不包括原型链上的属性)的数组。
const obj = { a: 1, b: 2 }; console.log(Object.keys(obj)); // ["a", "b"] -
Object.values(obj):
- 返回一个包含对象所有自身属性值的数组。
const obj = { a: 1, b: 2 }; console.log(Object.values(obj)); // [1, 2] -
Object.entries(obj):
- 返回一个包含对象自身所有属性的键值对数组。
const obj = { a: 1, b: 2 }; console.log(Object.entries(obj)); // [ ["a", 1], ["b", 2] ] -
Object.assign(target, ...sources):
- 将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
const obj1 = { a: 1 }; const obj2 = { b: 2 }; const obj3 = { c: 3 }; const obj = Object.assign(obj1, obj2, obj3); console.log(obj); // { a: 1, b: 2, c: 3 } -
Object.create(proto, [propertiesObject]):
- 创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。
const proto = { a: 1 }; const obj = Object.create(proto); obj.b = 2; console.log(obj); // { a: 1, b: 2 } -
Object.defineProperty(obj, prop, descriptor):
- 给对象添加一个新属性或修改现有属性,并返回对象。
const obj = {}; Object.defineProperty(obj, 'a', { value: 1, writable: false }); console.log(obj.a); // 1 -
Object.getOwnPropertyDescriptor(obj, prop):
- 返回指定对象上一个自有属性的属性描述符。
const obj = { a: 1 }; console.log(Object.getOwnPropertyDescriptor(obj, 'a')); // { value: 1, writable: true, enumerable: true, configurable: true } -
Object.freeze(obj):
- 冻结一个对象,使对象不能被修改。
const obj = { a: 1 }; Object.freeze(obj); obj.a = 2; // 不会改变 obj.a 的值 console.log(obj); // { a: 1 } -
Object.seal(obj):
- 密封一个对象,使对象不能添加新属性。
const obj = { a: 1 }; Object.seal(obj); obj.b = 2; // obj.b 不会被添加 console.log(obj); // { a: 1 } -
Object.preventExtensions(obj):
- 阻止对象添加新属性。
const obj = { a: 1 }; Object.preventExtensions(obj); obj.b = 2; // obj.b 不会被添加 console.log(obj); // { a: 1 } -
Object.isFrozen(obj):
- 判断对象是否被冻结。
const obj = { a: 1 }; Object.freeze(obj); console.log(Object.isFrozen(obj)); // true -
Object.isSealed(obj):
- 判断对象是否被密封。
const obj = { a: 1 }; Object.seal(obj); console.log(Object.isSealed(obj)); // true -
Object.isExtensible(obj):
- 判断对象是否允许扩展。
const obj = { a: 1 }; Object.preventExtensions(obj); console.log(Object.isExtensible(obj)); // false -
JSON.stringify(obj):
- 将一个 JavaScript 对象转换为 JSON 字符串。
const obj = { a: 1, b: 2 }; console.log(JSON.stringify(obj)); // '{"a":1,"b":2}' -
JSON.parse(str):
- 将一个 JSON 字符串转换为一个 JavaScript 对象。
const str = '{"a":1,"b":2}'; console.log(JSON.parse(str)); // { a: 1, b: 2 }
这些方法涵盖了对象的创建、复制、枚举、属性定义、属性描述符获取、冻结、密封、扩展预防以及 JSON 序列化和解析等操作。掌握这些方法可以帮助你更有效地操作和处理 JavaScript 对象。