Object.keys()
구문
Object.keys(obj)
설명
주어진 객체의 속성 이름들을 배열에 담아 반환해줘요
예제
//객체를 하나 만들어 볼께요
const object1 = {
a: 'something',
b: 100,
c: 'kim'
};
//Object.keys()를 사용해볼께요
console.log(Object.keys(object1))// [ 'a', 'b', 'c' ]
//이번엔 defineProperties()메서드를 사용해서 원하는 key들만 반환시켜볼께요
const object2 = Object.defineProperties({},{
a : {
value : 'somestring',
enumerable : true
},
b : {
value : 42,
enumerable : false
},
c : {
value : 'kim',
enumerable : true
}
})
// b만 enumerable(순회할 때 출력을 결정할 수 있는 옵션)을 false로 설정했어요
// 어떻게 나올지 콘솔찍어볼께요
console.log(Object.keys(object2));//[ 'a' , 'c' ]
// b 키만 출력되지 않았어요
Plain Text
복사
Object.seal(), Object.preventExtensions()
구문
Object.preventExtensions(obj)Object.seal(obj)
설명
매개변수로 받아온 객체를 밀봉하여 객체의 확장을 막아요(새 속성 추가 X)
하지만 기존 속성의 값을 변경할 수있다는 점에서 Object.freeze()메서드와 차이점이 존재해요.
예제
//age속성을 갖는 객체를 하나 만들어볼께요.
const object1 = {
age : 100,
};
//만들객체를 밀봉시켜볼께요
Object.seal(object1);
//1. name 속성을 추가 시켜볼께요
object1.name = '홍길동';
//콘솔을 찍어봐요
console.log(object1.name);
// 결과값 => undefined
//2. 기존에 있던 age 속성을 지워볼께요
'use strict'
delete object1.age
//Uncaught TypeError: Cannot delete property 'age'
//3. age값을 변경시켜볼께요
object1.age = 200;
//콘솔찍어봐요
console.log(object1.age);
//결과값 => 200
Plain Text
복사
Object.preventExtensions() 메서드도 동일하게 작동하기 때문에 예제에 포함시키지 않았고 만약 속성의 값을 변경시켜 주기 싫다 하시면 Object.freeze() 또는 Object.defineProperties() 사용할 수 있어요