ECMA 스크립트: 객체의 속성을 지정하는 defineProperty
.defineProperty() 메소드: 객체에 새로운 속성을 추가하거나 객체를 수정한 뒤 그 객체를 반환한다.
1. 객체 속성 관련 옵션
value: 객체의 속성 값
writable: 객체의 속성 값 변경 유무 (true/false) . 기본값은 false
get: getter
set: setter
configurable: 속성의 설정 변경 가능 여부 체크. 기본값은 false
enumerable: for in 반복문으로 검사 가능 여부 체크. 기본값은 false
1) 객체 관련 예제 defineProperty 메서드의 사용
<script>
var object = {};
Object.defineProperty(object, 'name', {
value: '홍길동',
writable: true,
enumerable: true
});
object.name = '이순신'; // writable이 true이므로 값이 변경 가능하다.
for(var i in object) { // enumarable이 true이므로 반복문 사용 가능
alert(i + ': ' + object[i]);
}
alert(object.name);
</script>
2) 객체 관련 예제 2 getter와 setter
defineProperty 안에 getter와 setter 메서드만 정의해야 한다.
<script>
var object = {};
var value = 'test';
Object.defineProperty(object, 'name', {
get: function(){
alert('getter');
return value;
},
set: function(newValue){
alert('setter');
value = newValue;
}
});
object.name = 'ALPHA';
alert(object.name);
</script>
3) 2개 이상의 속성을 추가하는 경우의 예제 .defineProperties()
.defineProperties() : defineProperty와 마찬가지로 사용하나 복수의 속성을 추가할 수 있다.
enumerable은 기본값이 false이므로 반드시 true로 해줘야 한다.
<script>
var object = {};
Object.defineProperties(object, {
name: {value:'홍길동', enumerable: true},
resion:{value:'서울시', enumerable: true}
});
for(var i in object) {
alert(i + ': ' + object[i]);
}
</script>
'JavaScript' 카테고리의 다른 글
1. 자바스크립트 기초: 주석, 연산자 (0) | 2017.08.17 |
---|---|
ECMA 스크립트: 객체의 생성과 속성 추가, 삭제, 수정 (0) | 2016.05.25 |
ECMA 스크립트의 문자열 공백 제거 trim() (0) | 2016.05.24 |
ECMA 스크립트의 JSON (0) | 2016.05.24 |
ECMA 스크립트에서의 배열 (0) | 2016.05.24 |