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

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

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

  • 相关阅读:
    省选前模拟
    $SA$后缀数组
    一键运行
    多项式$fft$,$ntt$,$fwt$初步
    插头$DP$初步
    网络流初步
    欧拉路相关
    模板—Hash_map
    HZOJ Function
    HZOJ Tree
  • 原文地址:https://www.cnblogs.com/wccc/p/6732919.html
Copyright © 2011-2022 走看看