JS对象常用方法手册

150 阅读3分钟

常见的 JavaScript 对象的方法速览:

  1. Object.keys(obj)

    • 返回一个数组,包含给定对象自身可枚举属性的名称。
  2. Object.values(obj)

    • 返回一个数组,包含给定对象自身可枚举属性的值。
  3. Object.entries(obj)

    • 返回一个数组,包含给定对象自身可枚举属性的键值对数组。
  4. Object.hasOwnProperty(prop)

    • 判断对象是否具有指定属性,不包括原型链上的属性。
  5. Object.assign(target, ...sources)

    • 将一个或多个源对象的可枚举属性复制到目标对象,并返回目标对象。
  6. Object.freeze(obj)

    • 冻结对象,使其属性不可修改、删除或添加。
  7. Object.seal(obj)

    • 封闭对象,阻止添加或删除属性,但允许修改属性值。
  8. Object.getOwnPropertyNames(obj)

    • 返回一个数组,包含对象自身的所有属性名称,包括不可枚举属性。
  9. Object.create(proto[, propertiesObject])

    • 创建一个新对象,使用指定的原型对象和属性值。
  10. Object.getPrototypeOf(obj)

    • 返回指定对象的原型(即 __proto__ 属性的值)。
  11. Object.setPrototypeOf(obj, proto)

    • 设置指定对象的原型为指定的原型对象。
  12. Object.entries(obj)

    • 返回一个给定对象自身可枚举属性的 [key, value] 数组。
  13. Object.getOwnPropertyDescriptors(obj)

    • 返回一个对象,包含指定对象所有自身属性的描述符。
  14. Object.fromEntries(iterable)

    • 将一个键值对的数组转换为一个对象。
  15. Object.toString()

    • 返回对象的字符串表示形式。

示例

  1. Object.keys(obj)

    • 场景:需要获取对象的所有属性名称。
    • 示例:
    const obj = { name: 'John', age: 30, city: 'New York' };
    const keys = Object.keys(obj);
    console.log(keys); // 输出: ["name", "age", "city"]
    
  2. Object.values(obj)

    • 场景:需要获取对象的所有属性值。
    • 示例:
    const obj = { name: 'John', age: 30, city: 'New York' };
    const values = Object.values(obj);
    console.log(values); // 输出: ["John", 30, "New York"]
    
  3. Object.entries(obj)

    • 场景:需要遍历对象的所有键值对。
    • 示例:
    const obj = { name: 'John', age: 30, city: 'New York' };
    const entries = Object.entries(obj);
    console.log(entries); // 输出: [["name", "John"], ["age", 30], ["city", "New York"]]
    
  4. Object.hasOwnProperty(prop)

    • 场景:需要检查对象是否具有某个属性。
    • 示例:
    const obj = { name: 'John', age: 30 };
    console.log(obj.hasOwnProperty('name')); // 输出: true
    console.log(obj.hasOwnProperty('city')); // 输出: false
    
  5. Object.assign(target, ...sources)

    • 场景:需要将多个对象的属性合并到一个目标对象中。
    • 示例:
    const target = { a: 1, b: 2 };
    const source = { b: 3, c: 4 };
    const result = Object.assign({}, target, source);
    console.log(result); // 输出: { a: 1, b: 3, c: 4 }
    
  6. Object.keys(obj)

    • 场景:需要获取对象的所有属性名称。
    • 示例:
    const obj = { name: 'John', age: 30, city: 'New York' };
    const keys = Object.keys(obj);
    console.log(keys); // 输出: ["name", "age", "city"]
    
  7. Object.values(obj)

    • 场景:需要获取对象的所有属性值。
    • 示例:
    const obj = { name: 'John', age: 30, city: 'New York' };
    const values = Object.values(obj);
    console.log(values); // 输出: ["John", 30, "New York"]
    
  8. Object.entries(obj)

    • 场景:需要遍历对象的所有键值对。
    • 示例:
    const obj = { name: 'John', age: 30, city: 'New York' };
    const entries = Object.entries(obj);
    console.log(entries); // 输出: [["name", "John"], ["age", 30], ["city", "New York"]]
    
  9. Object.hasOwnProperty(prop)

    • 场景:需要检查对象是否具有某个属性。
    • 示例:
    const obj = { name: 'John', age: 30 };
    console.log(obj.hasOwnProperty('name')); // 输出: true
    console.log(obj.hasOwnProperty('city')); // 输出: false
    
  10. Object.assign(target, ...sources)

    • 场景:需要将多个对象的属性合并到一个目标对象中。
    • 示例:
    const target = { a: 1, b: 2 };
    const source = { b: 3, c: 4 };
    const result = Object.assign({}, target, source);
    console.log(result); // 输出: { a: 1, b: 3, c: 4 }
    

    继续:

  11. Object.freeze(obj)

    • 场景:需要防止对象的属性被修改。
    • 示例:
    const obj = { name: 'John', age: 30 };
    Object.freeze(obj);
    obj.age = 40; // 无效操作,不会改变对象的属性
    console.log(obj); // 输出: { name: 'John', age: 30 }
    
  12. Object.seal(obj)

    • 场景:需要防止对象的属性被删除或添加,但允许修改属性值。
    • 示例:
    const obj = { name: 'John', age: 30 };
    Object.seal(obj);
    delete obj.age; // 无效操作,无法删除属性
    obj.city = 'New York'; // 无效操作,无法添加属性
    obj.age = 40; // 有效操作,可以修改属性值
    console.log(obj); // 输出: { name: 'John', age: 40 }
    
  13. Object.getOwnPropertyNames(obj)

    • 场景:需要获取对象的所有属性名称,包括不可枚举属性。
    • 示例:
    const obj = Object.create({}, {
      name: {
        value: 'John',
        enumerable: false
      },
      age: {
        value: 30,
        enumerable: true
      }
    });
    const names = Object.getOwnPropertyNames(obj);
    console.log(names); // 输出: ["name", "age"]
    
  14. Object.create(proto[, propertiesObject])

    • 场景:需要创建一个新对象,并指定其原型对象和属性值。
    • 示例:
    const proto = { greet() { console.log('Hello!'); } };
    const obj = Object.create(proto, {
      name: { value: 'John' }
    });
    obj.greet(); // 输出: Hello!
    console.log(obj.name); // 输出: John
    
  15. Object.getPrototypeOf(obj)

    • 场景:需要获取对象的原型对象。
    • 示例:
    const proto = { greet() { console.log('Hello!'); } };
    const obj = Object.create(proto);
    console.log(Object.getPrototypeOf(obj) === proto); // 输出: true