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(객체명) : 객체의 모든 속성명으로 배열 생성
'Langauge > Javascript' 카테고리의 다른 글
[표준 객체] Number 객체 (0) | 2020.07.21 |
---|---|
[표준 객체] Object 객체 (0) | 2020.07.21 |
DOM(Document Object Model) (0) | 2020.07.21 |
Javascript 비동기 함수 (0) | 2020.07.21 |
JavaScript와 Java의 차이점 (0) | 2020.07.18 |