getter, setter
1. get 속성
var obj = {};
Object.defineProperty(obj, "book", {
get: function(){
return "Javascript";
}
});
var result = obj.book;
console.log(result);
[실행 결과]
Javascript
2. set 속성
var obj = {}, data = {};
Object.defineProperty(obj, "book", {
set: function(param){
data.title = param;
},
get: function(){
return data.title;
}
});
obj.book = "Javascript";
console.log(obj.book);
[실행 결과]
Javascript
ES5 Object 함수
프로퍼티 추출
1. getPrototypeOf()
구분 | 데이터 (값) |
---|
object | Object 오브젝트 |
파라미터 | 대상 인스턴스 |
반환 | 프로퍼티 |
function Book(point){
this.point = point;
};
Book.prototype.getPoint = function(){};
Book.prototype.setPoint = function(){};
var obj = new Book(100);
var result = Object.getPrototypeOf(obj);
for (var key in result){
console.log(key + ":" + result[key]);
};
[실행 결과]
2. getOwnPropertyNames()
구분 | 데이터 (값) |
---|
object | Object 오브젝트 |
파라미터 | 대상 오브젝트 |
반환 | [프로퍼티 이름] |
var obj = {};
Object.defineProperties(obj, {
book: {value: "책"},
point: {value: 123}
});
var names = Object.getOwnPropertyNames(obj);
for (var k = 0; k < names.length; k++){
console.log(names[k]);
};
[실행 결과]
book
point
3. keys()
구분 | 데이터 (값) |
---|
object | Object 오브젝트 |
파라미터 | 대상 오브젝트 |
반환 | 프로퍼티 이름 |
var obj = {};
Object.defineProperties(obj, {
book: {
value: "책", enumarable: true
},
point: {value: 123}
});
var names = Object.keys(obj);
for (var k = 0; k < names.length; k++){
console.log(names[k]);
};
[실행 결과]
book
프로퍼티 디스크립터 함수
함수 \ 프로퍼티 | 추가 | 삭제 | 변경 |
---|
preventExtensions() | T/F | | |
isExtensible() | R | | |
seal() | T/F | T/F | |
isSealed() | R | R | |
freeze() | T/F | T/F | T/F |
isFrozen() | R | R | R |
1. getOwnPropertyDescriptor()
구분 | 데이터 (값) |
object | Object 오브젝트 |
파라미터 |
대상 오브젝트 |
|
프로퍼티 이름 |
반환 | 디스크립터 |
var obj = {};
Object.defineProperty(obj, "book", {
value: "책",
writable: true, enumerable: true
});
var desc =
Object.getOwnPropertyDescriptor(obj, "book");
for (var key in desc){
console.log(key + ":" + desc[key]);
[실행 결과]
value:책
writable:true
enumerable:true
configurable:false
2. preventExtensions()
var obj= {};
Object.preventExtensions(obj);
try{
Object.defineProperty(obj, "book", {
value: "Javascript"
});
} catch(e) {
console.log("추가 불가");
};
[실행 결과]
추가 불가
3. isExtensible()
var obj= {};
Object.defineProperty(obj, "book", {
value: "Javascript"
});
console.log(Object.isExtensible(obj);
Object.preventExtensions(obj);
console.log(Object.isExtensible(obj);
};
[실행 결과]
true
false
4. seal()
var obj= {};
Object.defineProperty(obj, "book", {
value: "Javascript", writable: true
});
Object.seal(obj);
try{
Object.defineProperty(obj, "sports", {
value: "스포츠"
});
} catch(e) {
console.log("추가 불가");
};
[실행 결과]
추가 불가
5. isSealed()
var obj= {};
Object.defineProperty(obj, "book", {
value: "Javascript", writable: true
});
console.log(Object.isSealed(obj));
Object.seal(obj);
console.log(Object.isSealed(obj));
[실행 결과]
false
true
6. freeze()
var obj = {};
Object.defineProperty(obj, "book", {
value: "Javascript". writable: true
});
Object.freeze(obj);
try {
Object.defineProperty(obj, "book" {
value: "포인트"
});
} catch(e) {
console.log("변경 불가");
};
console.log(obj.book);
[실행 결과]
변경 불가
Javascript
7. isFrozen()
var obj = {};
Object.defineProperty(obj, "book", {
value: "Javascript",
writable: true
});
console.log(Object.isFrozen(obj));
Object.freeze(obj);
console.log(Obejct.isFrozen(obj));
[실행 결과]
false
true