zoukankan      html  css  js  c++  java
  • js中Object.freeze()函数的作用,手动封装一个Object.freeze()

    从字面理解,freeze是冷冻,冻结的意思(像账户冻结)。

    当用const申明常量时,基础数据类型申明后是不可以被修改的,但是申明数组和对象时,申明的变量只是指向了该引用数据类型的地址,所以只是地址不允许被修改,但是内容可以被修改,这个时候就可以用到Object.freeze()函数了

     

    给用Object.freeze()函数包裹的对象添加属性时,打印出来的结果是没有添加成功的,那么对已有的属性进行修改,能否实现呢

    打印出来结果,并没有修改成功,这也就是Object.freeze()函数的作用,可以冻结数据,内容不允许被拓展和修改。

    那么在Object.freeze()函数之前,是怎么实现引用数据类型的冻结功能的呢,根据Object.freeze()的这两个功能,我们可以手动封装一个Object.freeze()

     

    可以看到用Object.defineProperty()函数对对象的属性添加了只读的描述后,该属性也是不允许被修改的,但是obj还是可以添加属性的,那么我们在用Object.seal()函数将obj包裹一下,就可以实现不允许添加属性的功能了

    也就是说,我们可以把引用数据类型同时用Object.defineProperty()和Object.seal()函数封装包裹起来,就可以实现Object.freeze()函数的效果了

     

    效果也是一样的,这就是Object.freeze()函数所实现的功能了。

  • 相关阅读:
    Web框架&&django介绍
    bootstrap
    jQuery
    js Bom和Dom
    javascript
    css
    二分查找
    php常用函数
    基于laravel自定义测试组件
    Document
  • 原文地址:https://www.cnblogs.com/zhilu/p/13884818.html
Copyright © 2011-2022 走看看