getter_setter
Posted sske531549304
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了getter_setter相关的知识,希望对你有一定的参考价值。
访问器属性: 不实际存储属性值
专门对其它属性提供验证保护
何时: 只要按照自定义规则保护属性
如何: 也有四大特性:
{
get:function(){return 受保护的属性值},
set:function(val){
验证要赋的新值val
验证通过才将val保存到受保护的属性中
},
enumerable:true/false,
configurable:true/false,
}
当通过访问器属性获取受保护的属性值时
自动调用get方法
当通过访问器属性为受保护的属性赋值时
自动调用set方法
参数val,自动获得要赋的新值
大问题: 受保护的属性值应该保存在哪儿?
才能做到比人不能直接用,只能通过访问器属性访问
解决: 闭包!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var eric={
id:1001,
ename:"Eric"
};
+function(){
var _age;
Object.defineProperty(eric,"age",{
get:function () {
return _age;
},
set:function (val) {//val自动获取要赋的新值
if (val>=18&&val<=65)
_age=val;
else
throw new RangeError("年龄必须介于18-65之间");
}
})
}();
// eric.age=10;//当试图给访问器属性赋值时,会自动调用set方法
eric.age=26;
console.log(eric.age);
eric._age=0;
console.log(eric.age);
</script>
</body>
</html>
以上是关于getter_setter的主要内容,如果未能解决你的问题,请参考以下文章