1.Object.assign(target,...sources)

  • 功能:返回指定对象的原型对象。

  • 示例

const target = { a: 1, b: 2 };
const source = { b: 3, c: 4 };
Object.assign(target, source);
console.log(target); 
// 输出: { a: 1, b: 3, c: 4 }

2.Object.create(proto[, propertiesObject])

  • 功能:使用指定的原型对象(proto)和属性(可选的propertiesObject)创建一个新对象。

  • 示例

const proto = { greet: function() { console.log('Hello!'); } };
const newObj = Object.create(proto);
newObj.greet(); 
// 输出: Hello!

3.Object.defineProperty(obj, prop, descriptor)

  • 功能:在一个对象(obj)上定义一个新属性(prop),或者修改一个已经存在的属性,并且可以通过descriptor对属性进行更精细的配置,如设置属性的可枚举性、可配置性和可写性等。

  • 示例

const obj = {};
Object.defineProperty(obj, 'name', {
    value: 'John',
    writable: false,
    enumerable: true,
    configurable: true
});

4.Object.defineProperties(obj, props)

  • 功能:直接在一个对象(obj)上定义多个新的属性或修改现有属性,props是一个对象,它的键是要定义或修改的属性名,值是对应的属性描述符。

  • 示例

const obj = {};
Object.defineProperties(obj, {
  'name': {
    value: 'Alice',
    writable: true
  },
  'age': {
    value: 30,
    enumerable: true
  }
});

5.Object.entries(obj)

  • 功能:返回一个给定对象(obj)自身可枚举属性的键值对数组。每个键值对被表示为一个包含两个元素的数组,第一个元素是属性名,第二个元素是属性值。

  • 示例

const obj = { a: 1, b: 2, c: 3 };
console.log(Object.entries(obj)); 
// 输出: [['a', 1], ['b', 2], ['c', 3]]

6.Object.freeze(obj)

  • 功能:冻结一个对象,冻结后的对象不能被修改,即不能添加新属性、不能删除现有属性、不能修改属性的值(对于数据属性)、不能修改属性的可枚举性、可配置性和可写性(对于访问器属性)。

  • 示例

const obj = { a: 1, b: 2 };
Object.freeze(obj);
obj.a = 3; 
// 在严格模式下会抛出错误

7.Object.getOwnPropertyDescriptor(obj, prop)

  • 功能:返回指定对象(obj)上一个自有属性(prop)的属性描述符。属性描述符是一个包含属性的各种配置信息(如valuewritableenumerableconfigurable)的对象。

  • 示例

const obj = { a: 1 };
console.log(Object.getOwnPropertyDescriptor(obj, 'a')); 
// 输出: { value: 1, writable: true, enumerable: true, configurable: true }

8.Object.getOwnPropertyNames(obj)

  • 功能:返回一个由指定对象(obj)的所有自身属性的属性名(包括不可枚举属性)组成的数组。

  • 示例

const obj = Object.defineProperty({}, 'hidden', {
  value: 42,
  enumerable: false
});
console.log(Object.getOwnPropertyNames(obj)); 
// 输出: ['hidden']

9.Object.getOwnPropertySymbols(obj)

  • 功能:返回一个给定对象(obj)的所有自身的符号属性的数组。符号属性是使用Symbol类型作为键的属性。

  • 示例

const sym = Symbol('description');
const obj = { [sym]: 'This is a symbol property' };
console.log(Object.getOwnPropertySymbols(obj)); 
// 输出: [Symbol(description)]
  • 功能:返回指定对象(obj)的原型对象。

  • 示例

const obj = { a: 1 };
const proto = Object.getPrototypeOf(obj);
console.log(proto); 
// 输出: {}(通常是Object.prototype)

11.Object.is(value1, value2)

  • 功能:判断两个值是否在值和类型上完全相同。与===类似,但在处理NaN+0-0时有区别。Object.is(NaN, NaN)返回trueObject.is(+0, -0)返回false

  • 示例

console.log(Object.is(5, 5)); 
// 输出: true
console.log(Object.is(NaN, NaN)); 
// 输出: true
console.log(Object.is(+0, -0)); 
// 输出: false

12.Object.keys(obj)

  • 功能:返回一个给定对象(obj)自身可枚举属性的字符串数组。

  • 示例

const obj = { a: 1, b: 2, c: 3 };
console.log(Object.keys(obj)); 
// 输出: ['a', 'b', 'c']

13.Object.preventExtensions(obj)

  • 功能:防止对象扩展,即不能再给对象添加新的属性。

  • 示例

const obj = { a: 1 };
Object.preventExtensions(obj);
bj.b = 2; 
console.log(obj); 
// 输出: { a: 1 }

14.Object.seal(obj)

  • 功能:密封一个对象,密封后的对象不能添加新属性,也不能删除现有属性,但可以修改现有属性的值。

  • 示例

const obj = { a: 1, b: 2 };
Object.seal(obj);
obj.c = 3; 
// 尝试添加新属性失败
obj.a = 3; 
// 修改现有属性的值成功
console.log(obj); 
// 输出: { a: 3, b: 2 }

15.Object.setPrototypeOf(obj, prototype)

  • 功能:设置一个对象(obj)的原型(prototype)。此操作可能会影响对象的继承关系和属性查找。

  • 示例

const proto = { greet: function() { console.log('Hello!'); } };
const obj = {};
Object.setPrototypeOf(obj, proto);
obj.greet(); 
// 输出: Hello!

16.Object.values(obj)

  • 功能:返回一个给定对象(obj)自身的(不含继承的)所有可枚举属性值的数组。

  • 示例

const obj = { a: 1, b: 2, c: 3 };
console.log(Object.values(obj)); 
// 输出: [1, 2, 3]