标签:eric char 通过 特性 return func 存储 解决 fun
访问器属性: 不实际存储属性值
专门对其它属性提供验证保护
何时: 只要按照自定义规则保护属性
如何: 也有四大特性:
{
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>
标签:eric char 通过 特性 return func 存储 解决 fun
原文地址:https://www.cnblogs.com/sske531549304/p/9374043.html