在javascript中,可以"覆盖" Object.prototype
的属性或方法。例如:
Object.prototype.toString = function(){
return "some string";
};
如果不仔细使用,它可能会破坏整个应用程序。是否有任何工具,技术或方法可以避免这种情况(例如,某种“严格模式”并不允许开发人员覆盖Object的属性)?
答案 0 :(得分:6)
Object.freeze(YourConstructor.prototype)
可以帮助保护您的构造函数的相关原型对象免遭混乱。来自MDN:
Object.freeze()
方法会冻结一个对象:即阻止向其添加新属性;防止删除现有属性;并且可以防止现有属性或其可枚举性,可配置性或可写性被更改,还可以防止原型被更改。
它适用于对象本身,而不是制作一个被冻结的副本。它返回你传递的相同引用。
最好不要单独留下内置原型,因此在Object.prototype
上使用它并不是一个好主意。 :-)当然,你需要做一个很多的测试...请参阅es-discuss邮件列表上的this thread以获取相关的有用信息。