摘要:注意一旦把对象定义为防篡改,就无法撤销了。使用阻止对象扩展注意严格模式下,不是而是报错。使用冻结对象对于库作者而言,冻结对象可防止有人修改库的核心对象。
前言:
去年7月份在简书写的,发现后端、React中也有体现,觉得有必要在微信上分享下。
注意:一旦把对象定义为防篡改,就无法撤销了。
1.不可扩展对象
扩展指可以给对象添加属性和方法。
使用Object.preventExtensions(object)阻止对象扩展
let a={name:"chen"} Object.preventExtensions(a) a.age=18 console.log(a.age) //undefined delete a.name console.log(a) //{}
注意:
(1)严格模式下,不是undefined而是报错。
(2)可以删除或修改已有对象属性,但不可添加新属性
使用Object.isExtensible(object) 判断对象是否可扩展
console.log(Object.isExtensible(a)) //false
2.密封的对象(sealed object)
注意:
(1)被密封的对象不可扩展,因此可用Object.isExtensible(object)来判断
(2)可以修改,不可删除已有属性,不可添加新属性
Object.seal(a) a.age=20 delete a.name console.log(a.name) //chen a.name="ch" console.log(a.name) //ch
使用Object.isSealed(object)判断是否密封
3.冻结的对象(frozen object)
冻结的对象是最严格的防篡改级别,既不可扩展,也是密封的,不可修改属性。
使用Object.freeze(object)冻结对象
对于JS库作者而言,冻结对象可防止有人修改库的核心对象。
(完)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/105616.html
摘要:一语法转换到语法从转换到会用到,所以先熟悉下到的转换。对于库作者而言,冻结对象可防止有人修改库的核心对象。 showImg(https://segmentfault.com/img/remote/1460000019757204); 一、JSX语法转换到Js语法从 JSX 转换到 JS 会用到React.createElement(),所以先熟悉下 JSX 到 JS 的转换。 这边是 ...
摘要:但同时由于比特币交易确认后无法更改,也从另一个方面导致买家付了款而卖家据不发货的漏洞。明白了这个原理,我们来看如何将比特币从一个人发给另一个人。 摘要 首先中本聪在摘要中就指明了要建立的是一个去中心化的p2p支付系统,并且不引入第三方来解决双重支付(double-spending)问题。并且提出了解决方案思路,提及时间戳(Timestamps)、工作量证明(Proof-of-Work)...
摘要:项目黄皮书一经发布,区块链垂直媒体星球日报就对这本书作了专题式的解读。在接受星球日报采访中,开发者们表示,担心节点集中化带来的安全风险。本文,星球日报将通过解读黄皮书,解答开发者关心的问题。 showImg(https://segmentfault.com/img/bVbt2EX?w=800&h=534); 由ETM科学院历时半年打磨的黄皮书,从科学和技术两方面全方位解读了ETM的理论...
摘要:项目黄皮书一经发布,区块链垂直媒体星球日报就对这本书作了专题式的解读。在接受星球日报采访中,开发者们表示,担心节点集中化带来的安全风险。本文,星球日报将通过解读黄皮书,解答开发者关心的问题。 showImg(https://segmentfault.com/img/bVbt2EX?w=800&h=534); 由ETM科学院历时半年打磨的黄皮书,从科学和技术两方面全方位解读了ETM的理论...
阅读 2872·2021-11-24 09:38
阅读 3510·2021-11-23 09:51
阅读 966·2021-09-09 11:52
阅读 4031·2021-08-11 11:18
阅读 1104·2019-08-30 14:05
阅读 3225·2019-08-30 11:23
阅读 1758·2019-08-29 17:02
阅读 1123·2019-08-26 13:49