ECMAScript5 (ES5) - Object 메서드
ES5에서는 객체부분을 많이 보완했음
● Object.defineProperty(객체명, 속성명, {옵션}) : 객체를 생성하는 함수
Object.defineProperties(객체명, {속성명1 : {옵션1, 옵션2}, {속성명2 : {옵션1, 옵션2}, ….})
let object = {};
Object.defineProperty(object, 'name', {
value : 'RintIanTta',
writable : false,
enumerable : false,
});
let object2 = {};
Object.defineProperty(object2, 'name', {
get : function () {
alert('getter');
return value;
},
set : function (newValue) {
alert('setter');
value = newValue;
}
});
let object3 = {};
Object.defineProperties(object3, {
name : {
value : 'RintIanTta',
writable : true
},
gender : {
value : 'Male'
}
});
→ object라는 객체 안에 name이라는 속성을 생성, 옵션으로 value, writable, enumerable, getter, setter 등을 설정함.
○ 옵션
- value : 속성 값
- writable : 수정여부
- enumerable : Iterator 사용가능 여부
- configurable : 속성 옵션값 수정 여부
- get : getter, value와 함께 사용 할 수 없음.
- set : setter, value와 함께 사용 할 수 없음.
● Object.create(객체명, {속성명1 : {옵션1, 옵션2}, {속성명2 : {옵션1, 옵션2}, …})
- 함수를 이용하여 객체 생성
- 객체명 자리에 프로토타입 객체를 입력하면 그 객체를 상속 받을 수 있음
// 생성
let object5 = Object.create({}, {
name : {
value : 'RintIanTta',
enumerable : true
},
gender : {
value : 'Male'
}
});
// 상속
function Person() {
this.name = 'anonymous';
}
function Unikys() {
this.name = 'Unikys';
}
let person = new Person();
let unikys = Object.create(person, {
hobby : {
value : 'nap'
}
});
● Object.preventExtensions(객체명) :동적 속성추가 제한
Object.isExtensible(객체명) : 동적 속성추가 제한여부 확인
●Object.seal(객체명) :동적 속성삭제 제한
Object.isSealed(객체명) : 동적 속성삭제 제한여부 확인
● Object.keys(객체명) :객체의 속성명으로 배열 생성
Object.getOwnPropertyNames(객체명) : 객체의 모든 속성명으로 배열 생성