zoukankan      html  css  js  c++  java
  • JS对象或属性的不变性

    提到不变性,不得不提一个概念:

    对象常量定义:结合可写性可配置性可以创建一个真正的常量属性(不可修改、重定义、删除)

    不变性可划分为以下几个等级:

    1)禁止扩展:Object.preventExtensions(...)

    代码示例:

    var myObject = {
                 a:2
             };
             Object.preventExtensions(myObject);
             myObject.b = 3;
             console.log(myObject.b);//undefined

    分析:这里可以看到,b属性创建失败

    注意:在严格模式下,会抛出TypeError异常

    2)密封:Object.seal(...),这个方法同时会调用 禁止扩展

    注意:密封之后不能添加属性,也不能配置属性或删除现有属性,但可以修改属性的值

    3)冻结:Object.freeze(...),同时调用密封,并将可读性设置为false

    注意:#冻结是级别最高的不变性;

           #这个对象引用的其他对象是不受影响的,当然也可以通过遍历他的所有引用对象进行冻结,不过这样有可能会无意冻结其他共享对象

  • 相关阅读:
    ZOJ Problem Set
    ZOJ Problem Set
    UVa 11464 偶数矩阵 枚举
    poj 1753 枚举
    Codeforces 637D 模拟
    hdu 5631 并查集
    hdu 5438 并查集
    UVa 10129 单词 (有向欧拉路+并查集)
    hdu 3018 欧拉路定理+并查集
    并查集的初步学习
  • 原文地址:https://www.cnblogs.com/wccc/p/6732919.html
Copyright © 2011-2022 走看看