js中對象的屬性的分類及權限

js中對象的屬性的分類及權限

對象的屬性分類

從屬性性子的角度分類可分為“數據屬性”和“存取器屬性”

數據屬性

定義


var o = {
    key0: value0
}

運用

o.key0 // 獲得value0
o.key0 = newValue0 // 設置新值

存取器屬性

定義


var o = {
    temp: 'temp',
    // 只能對要領設置存取器
    get key0 () {
        return 'value0'
    },
    set key0 (newValue) {
        this.temp = 'newTemp'
    }
}

運用

o.key0 // 獲得value0
o.key0 = newValue0 // 設置新值

發明這兩個屬性在定義時有區分,在運用時沒有區分。

屬性的權限

設置

Object.defineProperty(o, 'key0', {
    value: 'value0', // 值
    writable: true, // 可寫入
    enumerable: true, // 可羅列
    configurable: true // 可設置
})

在設置屬性權限為false時是末了一次修正屬性值的時刻。設置屬性可寫權限為false后就不能再修正了。

操縱對象的權限

擴大

設置不可擴大后就不能再擴大該對象的屬性了。

Object.isExtensible(o) // 獲得對象o是不是可擴大
Object.preventExtensions(o) // 設置對象o為不可擴大對象,且不可逆。再擴大o對象時不會報錯然則沒有實行效果。

封印

設置該對象的一切屬性可修正不可刪除不可增加。

Object.isSealed(o) // 獲得o對象是不是封印。
Object.seal(o) // 封印該對象,且不可逆。

凝結

設置該對象的一切屬性不可增加不可修正不可刪除。

Object.isFrozen(o) // 獲得o對象是不是凝結。
Object.freeze(o) // 設置o對象凝結,且不可逆。

小結

擴大封印凝結是不是可逆
增加XXXX
修正YYXX
刪除YXXX

2018/06/15 by stone

    原文作者:飛機
    原文地址: https://segmentfault.com/a/1190000015303746
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞