• 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

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

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

  • 相关阅读:
    浅读《构建之法》
    def 和 lamdba的区别
    Numpy和Pandas的区别
    Django:每点击一次就增加行可输入的表格
    F函数和Q函数的作用
    super()的用法
    liunx操作系统
    celery(超详细)
    celery
    FastDFS环境搭建
  • 原文地址:https://www.cnblogs.com/wccc/p/6732919.html
Copyright © 2020-2023  润新知