繁体   English   中英

hasOwnProperty和ECMAScript 5严格模式

[英]hasOwnProperty and ECMAScript 5 strict mode

我很好奇:有人知道为什么ECMAScript5规范没有在严格模式下收紧预定义对象原型的属性吗? 例如,似乎没有关于hasOwnProperty的定义方式的信息。 我已经尝试重新定义它(并测试了FF4 beta中的代码),我能够侥幸逃脱。 如果我没有做错任何事情,那么这意味着任何人仍然可以重新定义Object.prototype.hasOwnProperty属性并真正搞砸所有依赖它的代码来处理工作属性......

这个想法?

编辑:当我挖掘规范时更多信息......

正如我在下面添加注释,由于应用于它的元数据(可写,可枚举和可配置都设置为false)和FF ​​4 beta(我,因此无法在严格模式下真正更改Object.prototype “用来运行我的测试”确实会产生异常。

谢谢。

和? 如果我Object.prototype话,我可以杀死Object.prototype上的所有东西,不要在你的项目/网站中包含这样的代码,不要做更好的事情,找到那些正在做这些事情的白痴,并确保踢球。

我的意思是,我甚至可以通过执行True = False来搞砸任何给定的Python(2.x)程序。

你永远无法抵御白痴。 决不。 尽量教育或避免它们。

编辑

为了澄清这种情况的不可能性,如果将脚本封装到匿名包装器中(如果将其与其他代码一起使用,则应该这样做), "use strict"将是代码本地的。

这意味着,如果邪恶的白痴代码本身不使用严格的模式 - 他们不会......除非他们是完全白痴,我在这里不谈论 - 他们在ES3中运行,你的美丽严格不会甚至存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM