티스토리 뷰
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 |
