JS中Object方法大全

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)

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)

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)

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)

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 }

猜你喜欢

转载自blog.csdn.net/Jet_Lover/article/details/130176103
今日推荐