공부 하다가 궁금해졌다.. 이녀석들이 차이..
const screen = {
branch: 'Dell',
size: '27inch',
};
Object.getOwnPropertyNames(screen); // ['branch', 'size']
Object.keys(screen); // ['branch', 'size']
그냥 객체로만 메서드를 사용했을때는 별 차이가 없어보인다.
그런데 defineProperties 로 추가했을때 enumerable: false 라면 keys 메서드에서는 출력되지않는다.
Object.defineProperties(screen, {
resolution: {
enumerable: false,
value: '2560 x 1440',
},
});
var a = {};
Object.defineProperties(a, {
one: {enumerable: true, value: 1},
two: {enumerable: false, value: 2},
});
Object.keys(a); // ["one"]
Object.getOwnPropertyNames(a); // ["one", "two"]
그리고 배열 같은 경우에는 getOwnPropertyNames 는 배열의 길이까지 리턴해준다.
const animals = ['dog', 'cat', 'tiger'];
Object.keys(animals); // ['0', '1', '2']
Object.getOwnPropertyNames(animals); // ['0', '1', '2', 'length']
'공부기록 > 바닐라 자바스크립트' 카테고리의 다른 글
생성자의 파라미터를 객체로 받는것에 대하여 (0) | 2022.07.19 |
---|---|
자바스크립트 배열 내 조건에 맞는 원소 구하기 (every, some 함수) (0) | 2022.07.11 |
typeof , instanceof 에 대한 공부 (0) | 2022.07.11 |
자바스크립트 템플릿 리터럴 (Template literals) (0) | 2022.07.08 |
자바스크립트에서 사용자정의 생성자함수 (0) | 2022.07.08 |