簡體   English   中英

如何在javascript中避免原型污染?

[英]How to avoid prototype pollution in javascript?

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

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

如果不仔細使用,它可能會破壞整個應用程序。 是否有任何工具,技術或方法可以避免這種情況(例如,某種“嚴格模式”不允許開發人員覆蓋Object的屬性)?

Object.freeze(YourConstructor.prototype)可以幫助保護您的構造函數的相關原型對象從被打亂。 來自MDN:

Object.freeze()方法凍結一個對象:即阻止向其添加新屬性; 防止刪除現有屬性; 並且可以防止現有屬性或其可枚舉性,可配置性或可寫性被更改,還可以防止原型被更改。

它適用於對象本身,而不是制作一個被凍結的副本。 它返回您傳遞的相同引用。

最好單獨保留內置原型,因此在Object.prototype上使用它可能不是一個好主意。 :-)當然,你需要做大量的測試,如果你是...查看該線程的ES-討論相關的,有用的信息的郵件列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM