javascript-hasOwnProperty和ECMAScript 5严格模式

我很好奇:有人知道为什么ECMAScript5规范没有在严格模式下加强预定义对象原型的属性吗?例如,似乎没有有关hasOwnProperty定义方式的信息.我尝试重新定义它(并在FF4 beta中测试了代码),因此我得以解决.如果我没有做错任何事情,那么这意味着任何人仍然可以重新定义Object.prototype.hasOwnProperty属性,并真正将依赖于该属性的所有代码用于工作属性…

对此有何想法?

编辑:我在浏览规范时的更多信息…

正如我在下面的评论中所述,由于应用于它的元数据(可写,可枚举和可配置都设置为false)和FF ​​4 beta(我将其设置为严格模式),因此您无法真正在严格模式下更改Object.prototype正在运行我的测试)会生成异常.

谢谢.

解决方法:

和?如果愿意,我可以杀死Object.prototype上的所有内容,不要在您的项目/站点中包含这样的代码,不要做得更好,找到那些正在做这些事情的白痴,并确保将他们踢进去.

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

您永远都无法防范白痴.决不.尝试教育或避免他们.

编辑

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

这意味着,如果邪恶的白痴代码没有单独使用严格模式-并且它们不会…除非它们是完全的白痴,而我在这里不是在谈论它们-它们在ES3中运行,并且您的美丽严格性不会.甚至不存在.

上一篇:js-object-属性判断


下一篇:获取对象属性(所有属性、可枚举、不可枚举、自身属性【非原型链继承】)个数详解