constructor

防篡改: 禁止修改對象的屬性結構
 防擴展: 禁止向對象中添加新屬性
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>
相關文章
相關標籤/搜索