constructor

防篡改: 禁止修改对象的属性结构
 防扩展: 禁止向对象中添加新属性
Object.preventExtensions(obj)
 密封: 即防扩展,又禁止删除旧属性
Object.seal(obj)
其实是将所有属性的configurable设置为false

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
"use strict";

function Emp(id,name,salary,age) {
//this->新对象
//id只读,禁止删除
//name禁止删除
//salary禁止删除,禁止遍历
//age:18-65之间
this.id=id;
this.name=name;
this.salary=salary;

var _age;
Object.defineProperties(this,{
id:{writable:false},
salary:{enumerable:false},
age:{
get(){return _age;},
set(val) {
if (val>=18&&val<=65)
_age=val;
else
throw new RangeError("年龄必须介于18-65之间");
},
enumerable:true
}
});
this.age=age;

//防扩展
//设置当前新对象禁止扩展新属性
// Object.preventExtensions(this);
//密封
Object.seal(this);
}
var eric=new Emp(1001,"Eric",10000,25);
// eric.is++;
// delete eric.id;
// eric.age=-2;
console.dir(eric);
</script>
</body>
</html>
posted @ 2018-07-27 17:42  BugLess000  阅读(226)  评论(0编辑  收藏  举报