文章目录
- 前言
-
-
- [1. **`Object.create(proto[, propertiesObject])`**](#1.
Object.create(proto[, propertiesObject])
) - [2. **`Object.assign(target, ...sources)`**](#2.
Object.assign(target, ...sources)
) - [3. **`Object.keys(obj)`**](#3.
Object.keys(obj)
) - [4. **`Object.values(obj)`**](#4.
Object.values(obj)
) - [5. **`Object.entries(obj)`**](#5.
Object.entries(obj)
) - [6. **`Object.freeze(obj)`**](#6.
Object.freeze(obj)
) - [7. **`Object.seal(obj)`**](#7.
Object.seal(obj)
) - [8. **`Object.getPrototypeOf(obj)`**](#8.
Object.getPrototypeOf(obj)
) - [9. **`Object.setPrototypeOf(obj, prototype)`**](#9.
Object.setPrototypeOf(obj, prototype)
) - [10. **`Object.defineProperty(obj, prop, descriptor)`**](#10.
Object.defineProperty(obj, prop, descriptor)
) - [11. **`Object.defineProperties(obj, props)`**](#11.
Object.defineProperties(obj, props)
) - [12. **`Object.getOwnPropertyDescriptor(obj, prop)`**](#12.
Object.getOwnPropertyDescriptor(obj, prop)
) - [13. **`Object.getOwnPropertyDescriptors(obj)`**](#13.
Object.getOwnPropertyDescriptors(obj)
) - [14. **`Object.getOwnPropertyNames(obj)`**](#14.
Object.getOwnPropertyNames(obj)
) - [15. **`Object.getOwnPropertySymbols(obj)`**](#15.
Object.getOwnPropertySymbols(obj)
) - [16. **`Object.is(value1, value2)`**](#16.
Object.is(value1, value2)
) - [17. **`Object.isExtensible(obj)`**](#17.
Object.isExtensible(obj)
) - [18. **`Object.isFrozen(obj)`**](#18.
Object.isFrozen(obj)
) - [19. **`Object.isSealed(obj)`**](#19.
Object.isSealed(obj)
) - [20. **`Object.preventExtensions(obj)`**](#20.
Object.preventExtensions(obj)
)
- [1. **`Object.create(proto[, propertiesObject])`**](#1.
-
前言
在 JavaScript 中,Object
是一个非常重要的全局对象,它提供了许多方法来处理对象。以下是 Object
的各种方法及其示例:
1. Object.create(proto[, propertiesObject])
-
创建一个新的对象,并将其原型设置为指定的对象。
-
示例 :
javascriptconst person = { greet: function() { console.log(`Hello, my name is ${this.name}`); } }; const john = Object.create(person); john.name = "John"; john.greet(); // 输出: Hello, my name is John
2. Object.assign(target, ...sources)
-
将所有可枚举的属性从一个或多个源对象复制到目标对象。它返回目标对象。
-
示例 :
javascriptconst target = { a: 1, b: 2 }; const source = { b: 4, c: 5 }; const result = Object.assign(target, source); console.log(result); // 输出: { a: 1, b: 4, c: 5 }
3. Object.keys(obj)
-
返回一个数组,包含给定对象自身的所有可枚举属性名。
-
示例 :
javascriptconst obj = { a: 1, b: 2, c: 3 }; const keys = Object.keys(obj); console.log(keys); // 输出: ["a", "b", "c"]
4. Object.values(obj)
-
返回一个数组,包含给定对象自身的所有可枚举属性值。
-
示例 :
javascriptconst obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj); console.log(values); // 输出: [1, 2, 3]
5. Object.entries(obj)
-
返回一个数组,其中包含给定对象自身的所有可枚举属性的
[key, value]
对。 -
示例 :
javascriptconst obj = { a: 1, b: 2, c: 3 }; const entries = Object.entries(obj); console.log(entries); // 输出: [["a", 1], ["b", 2], ["c", 3]]
6. Object.freeze(obj)
-
冻结一个对象:冻结后不能向其添加或删除属性,且所有现有属性不可修改或重新配置。
-
示例 :
javascriptconst obj = { a: 1 }; Object.freeze(obj); obj.a = 2; // 没有效果 obj.b = 3; // 没有效果 console.log(obj); // 输出: { a: 1 }
7. Object.seal(obj)
-
封闭一个对象:不能添加或删除属性,但可以修改现有属性。
-
示例 :
javascriptconst obj = { a: 1 }; Object.seal(obj); obj.a = 2; // 可以修改现有属性 delete obj.a; // 无效,不能删除属性 obj.b = 3; // 无效,不能添加新属性 console.log(obj); // 输出: { a: 2 }
8. Object.getPrototypeOf(obj)
-
返回指定对象的原型(内部
[[Prototype]]
属性的值)。 -
示例 :
javascriptconst obj = Object.create({ x: 10 }); console.log(Object.getPrototypeOf(obj)); // 输出: { x: 10 }
9. Object.setPrototypeOf(obj, prototype)
-
设置指定对象的原型(内部
[[Prototype]]
属性的值)。 -
示例 :
javascriptconst obj = { a: 1 }; const proto = { b: 2 }; Object.setPrototypeOf(obj, proto); console.log(obj.b); // 输出: 2
10. Object.defineProperty(obj, prop, descriptor)
-
定义对象的新属性或修改现有属性,返回对象。
-
示例 :
javascriptconst obj = {}; Object.defineProperty(obj, 'a', { value: 1, writable: false, // 属性不可写 enumerable: true, // 属性可枚举 configurable: true // 属性可配置 }); console.log(obj.a); // 输出: 1 obj.a = 2; // 修改无效 console.log(obj.a); // 输出: 1
11. Object.defineProperties(obj, props)
-
同时定义多个属性或修改多个属性。
-
示例 :
javascriptconst obj = {}; Object.defineProperties(obj, { a: { value: 1, writable: true }, b: { value: 2, writable: false } }); console.log(obj.a); // 输出: 1 console.log(obj.b); // 输出: 2
12. Object.getOwnPropertyDescriptor(obj, prop)
-
返回指定属性的属性描述符(对象),如果该属性存在于对象中。
-
示例 :
javascriptconst obj = { a: 1 }; const descriptor = Object.getOwnPropertyDescriptor(obj, 'a'); console.log(descriptor); // 输出: { value: 1, writable: true, enumerable: true, configurable: true }
13. Object.getOwnPropertyDescriptors(obj)
-
返回指定对象所有自身属性的属性描述符。
-
示例 :
javascriptconst obj = { a: 1, b: 2 }; const descriptors = Object.getOwnPropertyDescriptors(obj); console.log(descriptors); // 输出: // { // a: { value: 1, writable: true, enumerable: true, configurable: true }, // b: { value: 2, writable: true, enumerable: true, configurable: true } // }
14. Object.getOwnPropertyNames(obj)
-
返回一个数组,包含对象自身的所有属性(包括不可枚举属性,但不包括符号属性)。
-
示例 :
javascriptconst obj = { a: 1, b: 2 }; const names = Object.getOwnPropertyNames(obj); console.log(names); // 输出: ["a", "b"]
15. Object.getOwnPropertySymbols(obj)
-
返回一个数组,包含对象自身的所有符号属性。
-
示例 :
javascriptconst sym1 = Symbol('a'); const sym2 = Symbol('b'); const obj = { [sym1]: 1, [sym2]: 2 }; const symbols = Object.getOwnPropertySymbols(obj); console.log(symbols); // 输出: [Symbol(a), Symbol(b)]
16. Object.is(value1, value2)
-
比较两个值是否相同。类似于
===
,但更严格。 -
示例 :
javascriptconsole.log(Object.is(25, 25)); // 输出: true console.log(Object.is(NaN, NaN)); // 输出: true console.log(Object.is(0, -0)); // 输出: false
17. Object.isExtensible(obj)
-
检查对象是否可扩展(即是否可以向对象添加新属性)。
-
示例 :
javascriptconst obj = {}; console.log(Object.isExtensible(obj)); // 输出: true Object.preventExtensions(obj); console.log(Object.isExtensible(obj)); // 输出: false
18. Object.isFrozen(obj)
-
检查对象是否被冻结。
-
示例 :
javascriptconst obj = Object.freeze({ a: 1 }); console.log(Object.isFrozen(obj)); // 输出: true
19. Object.isSealed(obj)
-
检查对象是否被密封。
-
示例 :
javascriptconst obj = Object.seal({ a: 1 }); console.log(Object.isSealed(obj)); // 输出: true
20. Object.preventExtensions(obj)
-
防止对象扩展,不能向对象添加新属性。
-
示例 :
javascriptconst obj = { a: 1 }; Object.preventExtensions(obj); obj.b = 2; // 无效,无法添加新属性 console.log(obj); // 输出: { a: 1 }
这些方法是操作 JavaScript 对象时常用的工具,它们涵盖了对象的创建、属性管理、比较、以及对象的冻结、密封等功能。