女排世界杯_1966世界杯 - ezrjnk120.com

JS中Object方法大全

2025-07-04 01:55:36

Object方法

Object.keys(obj)Object.values(obj) es8Object.entries(obj) es8Object.hasOwnProperty(prop)Object.assign(target, source1, [source2, ...])Object.freeze(obj)Object.is(obj1, obj2)Object.getOwnPropertyDescriptor(obj, prop) es8Object.setPrototypeOf(obj, prototype)Object.create(proto, [propertiesObject])Object.fromEntries(iterable) es10Object.defineProperties(obj, props)Object.defineProperty(obj, prop, descriptor)Object.getOwnPropertyNames(obj)Object.getOwnPropertySymbols(obj)Object.isExtensible(obj)Object.preventExtensions(obj)Object.isSealed(obj)Object.seal(obj)

Object.keys(obj)

Object.keys(obj) :返回一个对象所有可枚举的属性的名称组成的数组

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

const keys = Object.keys(obj);

console.log(keys); // ['a', 'b', 'c']

Object.values(obj) es8

Object.values(obj):返回一个对象所有可枚举的属性的值组成的数组。

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

const values = Object.values(obj);

console.log(values); // [1, 2, 3]

Object.entries(obj) es8

Object.entries(obj):返回一个对象所有可枚举的属性的键值对组成的数组。

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

const entries = Object.entries(obj);

console.log(entries); // [['a', 1], ['b', 2], ['c', 3]]

Object.hasOwnProperty(prop)

Object.hasOwnProperty(prop):判断一个对象是否有指定的属性。

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

const hasProp = obj.hasOwnProperty('a');

console.log(hasProp); // true

Object.assign(target, source1, [source2, …])

Object.assign(target, source1, [source2, …]):将一个或多个对象的属性拷贝到目标对象。

const obj1 = { a: 1 };

const obj2 = { b: 2 };

const obj3 = { c: 3 };

const result = Object.assign(obj1, obj2, obj3);

console.log(result); // { a: 1, b: 2, c: 3 }

Object.freeze(obj)

Object.freeze(obj):冻结一个对象,使其无法添加、删除、修改属性。

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

Object.freeze(obj);

obj.c = 3; // 添加属性无效

obj.a = 100; // 修改属性无效

delete obj.b; // 删除属性无效

console.log(obj); // { a: 1, b: 2 }

Object.is(obj1, obj2)

Object.is(obj1, obj2):判断两个值是否严格相等。

console.log(Object.is(1, 1)); // true

console.log(Object.is('foo', 'foo')); // true

console.log(Object.is({}, {})); // false

console.log(Object.is(+0, -0)); // false

console.log(Object.is(NaN, NaN)); // true

Object.getOwnPropertyDescriptor(obj, prop) es8

Object.getOwnPropertyDescriptor(obj, prop):获取指定属性的属性描述符。

const obj = { value: 123 };

const descriptor = Object.getOwnPropertyDescriptor(obj, 'value');

console.log(descriptor); // { value: 123, writable: true, enumerable: true, configurable: true }

Object.setPrototypeOf(obj, prototype)

Object.setPrototypeOf(obj, prototype):设置对象的原型(即设置其继承关系)。

const obj1 = {};

const obj2 = { value: 123 };

Object.setPrototypeOf(obj1, obj2);

console.log(obj1.__proto__ === obj2); // true

Object.create(proto, [propertiesObject])

Object.create(proto, [propertiesObject]):使用指定的原型来创建一个新的对象。

const obj1 = { a: 1 };

const obj2 = Object.create(obj1, { b: { value: 2 }});

console.log(obj2.a); // 1

console.log(obj2.b); // 2

Object.fromEntries(iterable) es10

Object.fromEntries(iterable):从一个可迭代对象中创建一个新的对象。

const entries = [['a', 1], ['b', 2]];

const obj = Object.fromEntries(entries);

console.log(obj); // { a: 1, b: 2 }

Object.defineProperties(obj, props)

Object.defineProperties(obj, props):定义一个或多个属性的描述符。

const obj = {};

Object.defineProperties(obj, {

a: { value: 1 },

b: { value: 'hello' }

});

console.log(obj.a); // 1

console.log(obj.b); // 'hello'

Object.defineProperty(obj, prop, descriptor)

Object.defineProperty(obj, prop, descriptor):定义一个属性的描述符。

const obj = {};

Object.defineProperty(obj, 'a', {

value: 123,

writable: false,

enumerable: true,

configurable: false

});

console.log(obj.a); // 123

obj.a = 456; // 不可写,赋值无效

console.log(obj.a); // 123

for (let key in obj) { console.log(key); } // 可枚举

delete obj.a; // 不可配置,删除无效

console.log(obj.a); // 123

Object.getOwnPropertyNames(obj)

Object.getOwnPropertyNames(obj):返回一个对象上所有的属性名(不包括Symbol)。

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

const keys = Object.getOwnPropertyNames(obj);

console.log(keys); // ['a', 'b']

Object.getOwnPropertySymbols(obj)

Object.getOwnPropertySymbols(obj):返回一个对象上所有的Symbol属性名。

const sym = Symbol('key');

const obj = { a: 1, [sym]: 10 };

const symbols = Object.getOwnPropertySymbols(obj);

console.log(symbols); // [Symbol('key')]

Object.isExtensible(obj)

Object.isExtensible(obj):判断一个对象是否可扩展(是否可以添加新属性)。

const obj1 = { a: 1 };

const obj2 = { b: 2 };

console.log(Object.isExtensible(obj1)); // true

Object.preventExtensions(obj1);

console.log(Object.isExtensible(obj1)); // false

console.log(Object.isExtensible(obj2)); // true

Object.preventExtensions(obj)

Object.preventExtensions(obj):防止一个对象被扩展(不能再添加新属性)。

const obj = { a: 1 };

Object.preventExtensions(obj);

obj.b = 2;

console.log(obj); // { a: 1 }

Object.isSealed(obj)

Object.isSealed(obj):判断一个对象是否被封闭(不能再添加、删除属性)。

const obj = Object.freeze({ a: 1 });

console.log(Object.isSealed(obj)); // true

Object.seal(obj)

Object.seal(obj):防止一个对象被封闭(不能再添加、删除属性,但可以修改属性值)。

const obj = { a: 1 };

Object.seal(obj);

obj.b = 2; // 无法添加新属性

delete obj.a; // 无法删除属性

obj.a = 100; // 可以修改属性值

console.log(obj); // { a: 100 }