3

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

对此有何想法?

编辑:在我深入研究规范时提供更多信息......

正如我在下面的评论中所说,由于应用于它的元数据(可写、可枚举和可配置都设置为 false)和 FF 4 beta(我'm 用来运行我的测试)确实会产生异常。

谢谢。

4

1 回答 1

3

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

我的意思是,我什至可以通过执行True = False.

你永远无法防范白痴。绝不。尝试教育或避免他们。

编辑

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

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

于 2011-01-10T14:18:58.413 回答