728x90

자바스크립트에서 객체(Object)는 키-값 쌍으로 구성된 데이터 구조입니다. 객체를 다루기 위한 다양한 내장 함수들이 있습니다. 주요 객체 함수를 자세히 설명하겠습니다.

1. Object.keys()

  • Object.keys(obj): 객체의 열쇠(키)를 배열로 반환합니다.
    let obj = { a: 1, b: 2, c: 3 };
    let keys = Object.keys(obj);  // keys는 ["a", "b", "c"]

2. Object.values()

  • Object.values(obj): 객체의 값들을 배열로 반환합니다.
    let obj = { a: 1, b: 2, c: 3 };
    let values = Object.values(obj);  // values는 [1, 2, 3]

3. Object.entries()

  • Object.entries(obj): 객체의 [key, value] 쌍을 배열로 반환합니다.
    let obj = { a: 1, b: 2, c: 3 };
    let entries = Object.entries(obj);  // entries는 [["a", 1], ["b", 2], ["c", 3]]

4. Object.assign()

  • Object.assign(target, ...sources): 하나 이상의 출처 객체로부터 대상 객체로 속성을 복사합니다.
    let target = { a: 1 };
    let source = { b: 2, c: 3 };
    let result = Object.assign(target, source);  // target은 이제 { a: 1, b: 2, c: 3 }

5. Object.freeze()

  • Object.freeze(obj): 객체를 동결하여 더 이상 수정할 수 없게 합니다.
    let obj = { a: 1 };
    Object.freeze(obj);
    obj.a = 2;  // 변경되지 않음, obj는 여전히 { a: 1 }

6. Object.seal()

  • Object.seal(obj): 객체를 봉인하여 기존 속성의 값을 변경할 수는 있지만, 속성을 추가하거나 삭제할 수 없게 합니다.
    let obj = { a: 1 };
    Object.seal(obj);
    obj.a = 2;  // 변경 가능, obj는 { a: 2 }
    delete obj.a;  // 삭제 불가, obj는 여전히 { a: 2 }

7. Object.getOwnPropertyDescriptor()

  • Object.getOwnPropertyDescriptor(obj, prop): 객체의 속성에 대한 속성 설명자를 반환합니다.
    let obj = { a: 1 };
    let descriptor = Object.getOwnPropertyDescriptor(obj, 'a');
    // descriptor는 { value: 1, writable: true, enumerable: true, configurable: true }

8. Object.getOwnPropertyDescriptors()

  • Object.getOwnPropertyDescriptors(obj): 객체의 모든 속성에 대한 속성 설명자를 반환합니다.
    let obj = { a: 1, b: 2 };
    let descriptors = Object.getOwnPropertyDescriptors(obj);
    // descriptors는 { a: { value: 1, writable: true, enumerable: true, configurable: true }, b: { value: 2, writable: true, enumerable: true, configurable: true } }

9. Object.defineProperty()

  • Object.defineProperty(obj, prop, descriptor): 객체의 특정 속성에 대해 새로운 속성 설명자를 정의합니다.
    let obj = {};
    Object.defineProperty(obj, 'a', {
      value: 1,
      writable: false,
      enumerable: true,
      configurable: true
    });
    obj.a = 2;  // 변경되지 않음, obj는 여전히 { a: 1 }

10. Object.defineProperties()

  • Object.defineProperties(obj, props): 객체의 여러 속성에 대해 속성 설명자를 정의합니다.
    let obj = {};
    Object.defineProperties(obj, {
      'a': {
        value: 1,
        writable: true,
        enumerable: true,
        configurable: true
      },
      'b': {
        value: 2,
        writable: false,
        enumerable: true,
        configurable: true
      }
    });
    obj.a = 3;  // 변경 가능, obj는 { a: 3, b: 2 }
    obj.b = 4;  // 변경되지 않음, obj는 여전히 { a: 3, b: 2 }

11. Object.create()

  • Object.create(proto, propertiesObject): 주어진 프로토타입 객체와 속성을 가지고 새로운 객체를 만듭니다.
    let proto = { a: 1 };
    let obj = Object.create(proto);
    console.log(obj.a);  // 1, obj는 프로토타입으로 proto를 가집니다.

12. Object.fromEntries()

  • Object.fromEntries(iterable): 키-값 쌍의 리스트를 객체로 변환합니다.
    let entries = [['a', 1], ['b', 2]];
    let obj = Object.fromEntries(entries);  // obj는 { a: 1, b: 2 }

13. Object.is()

  • Object.is(value1, value2): 두 값이 동일한지 비교합니다.
    console.log(Object.is(25, 25));  // true
    console.log(Object.is(NaN, NaN));  // true
    console.log(Object.is(0, -0));  // false

14. Object.hasOwn()

  • Object.hasOwn(obj, prop): 객체가 특정 속성을 자신의 속성으로 가지고 있는지 확인합니다.
    let obj = { a: 1 };
    console.log(Object.hasOwn(obj, 'a'));  // true
    console.log(Object.hasOwn(obj, 'b'));  // false

이들 함수들은 자바스크립트 객체를 다루는 데 매우 유용합니다. 객체의 속성을 정의, 조회, 수정하는 등의 다양한 작업을 쉽게 수행할 수 있습니다. 각 함수를 실습하며 사용법을 익히면 객체를 더욱 효과적으로 활용할 수 있습니다.

728x90
반응형

+ Recent posts