宝哥软件园

解析用JavaScript创建防篡改对象的方法

编辑:宝哥软件园 来源:互联网 时间:2021-08-28

本文说明了用JavaScript创建防篡改对象的方法。分享给大家参考,如下:

在JavaScript出现之前,开发者可能会不小心修改别人的代码,甚至重写原生对象!现在,您可以在ECMAScript 5中定义防篡改对象。O(_)O~

然而,一旦对象被定义为防篡改的,它就不能被撤销。

1个不可扩展对象

默认情况下,所有对象都是可扩展的,即属性和方法可以随意添加。现在,在使用对象之后。preventures(person)方法,对象不能扩展:

脚本类型=' text/JavaScript ' var person={ name : ' deniro ' };//person . age=29;//console . log(person . age);console . log(object . iseextensible(person));//true object . preventextures(person);person.age=15岁;console . log(person . age);//未定义的console . log(object . isextensible(person));//false/脚本运行结果:

在非严格模式下,向对象添加新成员会无声地失败;在严格模式下,会引发错误。

尽管不能向对象中添加新成员,但仍然可以修改和删除现有成员。Object.isExtensible()可以确定对象是否可扩展。

2个密封物体

不能扩展密封对象,现有成员的[[可配置]]属性也设置为false,这意味着不能删除该对象的属性和方法,但可以修改属性值:

脚本类型=' text/JavaScript ' var person={ name : ' deniro ' };console . log(object . iseextensible(person));//true console . log(object . issealed(person));//假Object.seal(人);//密封对象console.log(对象。是可扩展的(人));//false console . log(object . issealed(person));//真人.年龄=29;console . log(person . age);//未定义删除person.nameconsole . log(person . name);//deniro/脚本运行结果:

与可扩展对象类似,在非严格模式下,删除对象的现有成员会无声地失败;在严格模式下,会引发错误。

3个冻结的物体

物体最严格的防篡改等级是冰冻!冻结对象既不能扩展也不能密封,对象的数据属性[[可写]]设置为false,即属性值不能修改:

脚本类型=' text/JavaScript ' var person={ name : ' deniro ' };console . log(object . iseextensible(person));//true console . log(object . issealed(person));//false console . log(object . isfrozen(person));//false Object .冻结(人);console . log(object . iseextensible(person));//false console . log(object . issealed(person));//true console . log(object . isfrozen(person));//trueo person . age=29;console . log(person . age);//未定义删除person.nameconsole . log(person . name);//deniro person . name=' lily ';console . log(person . name);//deniro/脚本运行结果:

对于JavaScript第三方库来说,冻结对象是非常有用的,因为这些库最怕被不小心修改了,O(_)O~

感兴趣的朋友也可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun来测试上面的代码运行结果。

有关JavaScript的更多信息,请查看本网站的专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》和《JavaScript数学运算用法总结》

希望本文对JavaScript编程有所帮助。

更多资讯
游戏推荐
更多+