JS - 객체(3)
get, set
속성 Getter/setter 방법
var man = {
name: 'sunorry',
weibo: '@sunorry',
get age() {
return new Date().getFullYear() - 1990;
},
set age(val) {
console.log('Age can\'t be set to ' + val);
}
};
console.log(man.age); // 25
man.age = 100; // Age can't be set to 100
console.log(man.age); // still 25
더 복잡한 예 var a = "abc"; +a;//NaN
var man = {
weibo: '@sunorry',
$age: null, //
get age() {
if(this.$age == undefined) {
return new Date().getFullYear() - 1990;
} else {
return this.$age;
}
},
set age(val) {
val = +val; //
if(!isNaN(val) && val > 0 && val < 150) {
this.$age = +val;
} else {
throw new Error('Incorrect val = ' + val);
}
}
}
console.log(man.age); // 27
man.age = 100;
console.log(man.age); // 100
man.age = 'abc'; // error: Incorrect val = NaN
get/set과 원형 체인
function foo() {}
Object.defineProperty(foo.prototype, 'z', {
get: function() {
return 1;
}
});
var obj = new foo();
obj.z; // 1
obj.z = 10;
obj.z; // still 1
Object.defineProperty(obj, 'z', {
value: 100,
configurable: true
});
obj.z; // 100;
delete obj.z;
obj.z; // back to 1
var o = {};
Object.defineProperty(o, 'x', {
value: 1
}); // writeable=false, configurable=false
var obj = Object.create(o);
obj.x; // 1
obj.x = 200;
obj.x; // still 1, can't change it
Object.defineProperty(obj, 'x', {
writeable: true,
configurable: true,
value: 100
});
obj.x; // 100
obj.x = 500;
obj.x; // 500
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.