zoukankan      html  css  js  c++  java
  • 对象的扩展(Object.preventExtensions)、密封(Object.seal)和冻结(Object.freeze)

    1. 扩展对象
    • Object.preventExtensions
    • Object.isExtensible
    1. 密封对象
    • Object.seal
    • Object.isSealed
    1. 冻结对象
    • Object.freeze
    • Object.isFrozen

    1. Object.preventExtensions

    阻止对象扩展,让一个对象变的不可扩展,也就是永远不能再添加新的属性,可以删除原有属性和修改原有属性(能删能改,不能加)

    let obja = {
        a: 11,
        b:'我是obja中的b',
        c:'我是obja中的c'
    }
    
    Object.preventExtensions(obja)
    
    obja.d = 99
    
    console.log(obja)
    // VM418:11 {a: 11, b: "我是obja中的b", c: "我是obja中的c"}
    
    

    如果使用严格模式就会报错:
    VM425:10 Uncaught TypeError: Cannot add property d, object is not extensible

    2. Object.isExtensible

    判断一个对象是否可扩展,即是否可以给它添加新属性,返回true和false,true表示可以扩展,false表示不能进行扩展

    3. Object.seal

    让一个对象密封,并返回被密封后的对象。密封对象是指那些不能添加新的属性,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性,但可以修改已有属性的值的对象。(可改,不可加,不可删)

    var obj = {name: 'John'}
     
    // 密封
    Object.seal(obj)
     
    // 不能添加新属性
    obj.age = 30
    console.log(obj.age) // undefined
    

    4. Object.isSealed

    判断一个对象是否是密封的(sealed)返回true,false true表示是已经密封的,false表示非密封的。

    5. Object.freeze

    这个方法比 Object.seal 更加狠,冻结对象是指那些不能添加新的属性,不能修改已有属性的值,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性的对象。也就是说,这个对象永远是不可变的。(啥都不能干)

    var obj = {name: 'John'}
    Object.freeze(obj)
    obj.age = 30
    console.log(obj.age) // undefined
    

    6.Object.isFrozen

    判断一个对象是否被冻结(frozen),true表示非冻结,false表示已冻结

    看完这几个方法表示,工作中真的非常少用。就当记录一下。

  • 相关阅读:
    AtCoder Beginner Contest 113 D Number of Amidakuji
    UVA
    mt19937 -- 高质量随机数
    牛客网NOIP赛前集训营-提高组(第七场)C 洞穴
    牛客OI周赛4-提高组 C 战争(war)
    牛客OI周赛4-提高组 B 最后的晚餐(dinner)
    bzoj 4318 || 洛谷P1654 OSU!
    Tourists Codeforces
    bzoj 1791 [Ioi2008]Island 岛屿
    洛谷 P2231 [HNOI2002]跳蚤
  • 原文地址:https://www.cnblogs.com/justyouadmin/p/13462039.html
Copyright © 2011-2022 走看看