码迷,mamicode.com
首页 > 其他好文 > 详细

getter_setter

时间:2018-07-26 21:08:48      阅读:131      评论:0      收藏:0      [点我收藏+]

标签: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>

getter_setter

标签:eric   char   通过   特性   return   func   存储   解决   fun   

原文地址:https://www.cnblogs.com/sske531549304/p/9374043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!