防篡改: 禁止修改對象的屬性結構
防擴展: 禁止向對象中添加新屬性
Object.preventExtensions(obj)
密封: 即防擴展,又禁止刪除舊屬性
Object.seal(obj)
實際上是將全部屬性的configurable設置爲falsehtml
<!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>