티스토리 뷰

const obj = {
    name: 'jaewoo',
    number: '010-000-0000'
}

// set prototype object
Object.setPrototypeOf(obj, {protoProp: 'parent'});

// set non enumerable property
Object.defineProperty(obj, 'gender', {enumerable: false})

obj 객체를 base로 Object.keys, for...in, getOwnPropertyNames를 비교한다.

 

Object.keys

// returns enumerable properties
Object.keys(obj)
// ['name', 'number']

Object.getOwnPropertyNames

// returns enumerable & non-enumerable properties
Object.getOwnPropertyNames(obj)
// ['name', 'number', 'gender']

for...in

// returns enumerable properties (but, only string keys)
// including inherited enumerable properties
for(let key in obj){
  console.log(key)
};
// name
// number
// protoProp

Summary

  Object.keys Object.getOwnPeropertyNames for...in
enumerable O O O
non-enumerable X O X
inherited X X O

 

'JavaScript' 카테고리의 다른 글

var, let, const  (0) 2022.08.01
Execution context, scope chain  (0) 2022.08.01
this binding  (0) 2021.11.09
Closure  (0) 2021.11.09
prototype vs __proto__  (0) 2021.10.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함