让chartGPT 带我们复习js基础知识 对象方法(3)

58 阅读3分钟

好的,以下是 JavaScript 中常用的对象方法列表,并按照 Markdown 格式进行整理:

方法名说明示例
Object.keys(obj)返回给定对象的所有可枚举属性的名称数组。Object.keys({a: 1, b: 2})
Object.values(obj)返回给定对象的所有可枚举属性的值数组。Object.values({a: 1, b: 2})
Object.entries(obj)返回给定对象的所有可枚举属性的 [key, value] 键值对数组。Object.entries({a: 1, b: 2})
Object.assign(target, ...sources)将一个或多个源对象的可枚举属性复制到目标对象。Object.assign({}, {a: 1, b: 2})
Object.hasOwnProperty(prop)判断一个对象是否具有指定名称的自有属性(不包括原型链上的属性)。obj.hasOwnProperty('name')
Object.is(obj1, obj2)判断两个值是否严格相等。Object.is(5, 5)
Object.freeze(obj)冻结一个对象,使其属性不可修改。Object.freeze(obj)
Object.seal(obj)封闭一个对象,使其属性不可添加、删除,但可修改。Object.seal(obj)
Object.getPrototypeOf(obj)返回指定对象的原型。Object.getPrototypeOf(obj)
Object.setPrototypeOf(obj, prototype)设置指定对象的原型。Object.setPrototypeOf(obj, prototype)
Object.create(proto, [propertiesObject])使用指定的原型和属性创建一个新对象。Object.create({}, {a: {value: 1}})
Object.defineProperties(obj, props)定义多个新属性或修改现有属性的特性。Object.defineProperties(obj, {prop1: {...}})
Object.defineProperty(obj, prop, descriptor)在对象上定义一个新属性或修改现有属性的特性。Object.defineProperty(obj, 'name', {value: 'Alice'})
Object.getOwnPropertyDescriptor(obj, prop)返回指定对象上一个自有属性对应的属性描述符。Object.getOwnPropertyDescriptor(obj, 'name')
Object.getOwnPropertyNames(obj)返回给定对象的所有自有属性(包括不可枚举属性)的名称数组。Object.getOwnPropertyNames(window)
方法名说明示例
-----------------------------------------------------------------------------------------------------------------------
Object.getOwnPropertySymbols(obj)返回给定对象的所有自有 Symbol 类型的属性的数组。Object.getOwnPropertySymbols(obj)
Object.toString()返回对象的字符串表示。obj.toString()
Object.toLocaleString()根据设定的区域设置返回对象的本地化字符串表示。obj.toLocaleString()
Object.isPrototypeOf(obj)判断一个对象是否在另一个对象的原型链上。Person.prototype.isPrototypeOf(john)
Object.hasOwnProperty(prop)判断一个对象是否具有指定名称的自有属性(不包括原型链上的属性)。obj.hasOwnProperty('name')
Object.preventExtensions(obj)阻止给定对象添加新属性。Object.preventExtensions(obj)
Object.values(obj)返回给定对象的所有可枚举属性的值数组。Object.values({a: 1, b: 2})
Object.keys(obj)返回给定对象的所有可枚举属性的名称数组。Object.keys({a: 1, b: 2})
Object.isSealed(obj)判断给定对象是否已被封闭(即属性不可添加、删除,但可修改)。Object.isSealed(obj)
Object.isFrozen(obj)判断给定对象是否已被冻结(即属性不可修改)。Object.isFrozen(obj)
Object.isExtensible(obj)判断给定对象是否可扩展(即是否可以添加新属性)。Object.isExtensible(obj)
Object.fromEntries(entries)将键值对的列表转换为一个对象。Object.fromEntries([['a', 1], ['b', 2]])
Object.getOwnPropertyDescriptors(obj)返回指定对象的所有自有属性的属性描述符。Object.getOwnPropertyDescriptors(obj)
Object.toSource()返回对象的源代码表示(非标准方法,不建议使用)。obj.toSource()

这是一些常用的对象方法列表,在实际开发中可能会经常用到。每个方法都可以根据你的需求来选择使用。如果有任何进一步的问题,请随时提问!

const obj = { a: 1, b: 2 };

console.log(Object.keys(obj)); 
// 输出:[ 'a', 'b' ]

console.log(Object.values(obj)); 
// 输出:[ 1, 2 ]

console.log(Object.entries(obj)); 
// 输出:[ [ 'a', 1 ], [ 'b', 2 ] ]

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

console.log(obj.hasOwnProperty('a')); 
// 输出:true

console.log(Object.is(5, 5)); 
// 输出:true

Object.freeze(obj);
obj.a = 100; // 冻结后无法修改
console.log(obj); 
// 输出:{ a: 1, b: 2 }

Object.seal(obj);
obj.c = 3; // 封闭后无法添加新属性
delete obj.a; // 封闭后无法删除属性
console.log(obj); 
// 输出:{ a: 1, b: 2 }

const proto = { x: 10 };
const child = Object.create(proto, {
  y: { value: 20 }
});
console.log(Object.getPrototypeOf(child)); 
// 输出:{ x: 10 }

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