javascript - hasOwnProperty 和 ECMAScript 5 严格模式

标签 javascript strict ecmascript-5 hasownproperty

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

对此有何看法?

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

正如我在下面的评论中所说,由于应用于它的元数据(Writable、Enumerable 和 Configurable 都设置为 false)和 FF 4 beta,你无法在严格模式下真正更改 Object.prototype (我用它来运行我的测试)确实产生了异常。

谢谢。

最佳答案

然后呢?如果我愿意,我可以杀死 Object.prototype 上的所有内容,不要在您的项目/站点中包含此类代码,不要做更好的事情,找到那些正在做此类事情的白痴并确保踢球。

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

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

编辑

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

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

关于javascript - hasOwnProperty 和 ECMAScript 5 严格模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4647623/

相关文章:

php - 更改每个 session 的 MySQL 模式

javascript - ECMAScript 5 和 JavaScript 1.8.5 在语言特性方面有什么关联?

javascript - 如何防止 javascript 将我的日期转换为 GMT?

javascript - 尝试将 ng-repeat 从 img 元素移动到父 div

javascript - 为什么这个javascript在严格模式下没有错误

javascript - 无法在严格模式下创建对象属性

javascript - 如何从对象数组中获取从未出现在特定属性中的值

javascript - ECMAScript 规范中的 `ExpressionNoIn` 是什么意思?

javascript - 如何在Highchart中设置Precision-ToolTip

javascript - 计算价格 JavaScript