zoukankan      html  css  js  c++  java
  • 防篡改对象

    JavaScript多人开发协作过程中,很可能会意外篡改他人代码。防篡改对象,通过不可扩展、密封、冻结来解决这个问题。

    需要特别注意的是:一旦把对象定义为防篡改,就无法撤销了。

    1、不可扩展对象

    1 var person = {
    2     name: "Person Name"
    3 }
    4 Object.preventExtensions(person);
    5 
    6 person.age = 29;
    7 alert(person.age);  // undefined

    通过 Object.isExtensible([Object]) 可以确定对象是否可以扩展。 true 可以扩展, false 不可以扩展。

    不可扩展的对象,不能新增属性。

    2、密封的对象

     1 var person = {
     2     name: "Person Name"
     3 }
     4 Object.seal(person);
     5 
     6 person.age = 29;
     7 alert(person.age); // undefined
     8 
     9 delete person.name;
    10 alert(person.name); // Person Name

    通过 Object.isSealed([Object]) 可以确定对象是否被密封了。

    被密封的对方,不能新增属性,也不能删除属性。

    3、冻结的对象

     1 var person = {
     2     name: "Person Name"
     3 }
     4 Object.freeze(person);
     5 
     6 person.age = 29;
     7 alert(person.age); // undefined
     8 
     9 delete person.name;
    10 alert(person.name); // Person Name
    11 
    12 person.name = "New Name";
    13 alert(person.name); // Person Name

    通过 Object.isFrozen([Object]) 来检测对象是否被冻结。

    被冻结的对象,不能新增属性,并不能删除属性,也不能修改属性。

    4、总结

    冻结 > 密封 > 不可扩展

     
    不可扩展 ✖️ ✔️ ✔️
    密封 ✖️ ✖️ ✔️
    冻结 ✖️ ✖️ ✖️
  • 相关阅读:
    Pytorch 四种边界填充方式(Padding)
    数据预处理 —— padding数据
    Python PIL彩色图像转灰度图像
    Python PIL读取与保存图片
    Python-OpenCV 彩色图像转灰度图像
    Python-OpenCV读取与保存图片
    Python 矩阵旋转180度
    Pytorch 扩展Tensor维度、压缩Tensor维度
    基于SSM的健身房管理系统
    大学生创新创业项目-智取乐食
  • 原文地址:https://www.cnblogs.com/tinyTea/p/11114034.html
Copyright © 2011-2022 走看看