gpt4 book ai didi

javascript - 如何避免 javascript 中的原型(prototype)污染?

转载 作者:数据小太阳 更新时间:2023-10-29 05:17:40 26 4
gpt4 key购买 nike

在 javascript 中,可以“覆盖”Object.prototype 的属性或方法。例如:

Object.prototype.toString = function(){
return "some string";
};

如果不小心使用,它可能会破坏整个应用程序。是否有任何工具、技术或方法可以避免这种情况(例如,某种不允许开发人员覆盖对象属性的“严格模式”)?

最佳答案

Object.freeze(YourConstructor.prototype)可以帮助保护您的 构造函数的关联原型(prototype)对象免遭破坏。来自 MDN:

The Object.freeze() method freezes an object: that is, prevents new properties from being added to it; prevents existing properties from being removed; and prevents existing properties, or their enumerability, configurability, or writability, from being changed, it also prevents the prototype from being changed.

它对对象本身起作用,而不是制作卡住的副本。它返回您传递给它的相同引用。

最好单独使用内置原型(prototype),因此在 Object.prototype 上使用它可能不是一个好主意。 :-) 当然,如果您这样做的话,您需要进行大量 测试...参见this thread在 es-discuss 邮件列表上获取相关的有用信息。

关于javascript - 如何避免 javascript 中的原型(prototype)污染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45257236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com