gpt4 book ai didi

javascript - 有什么方法可以从更改 Object.prototype.hasOwnProperty 的人那里恢复过来吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:16 25 4
gpt4 key购买 nike

您总是读到 for-in 循环应该检查 o.hasOwnProperty(k) 以跳过 Object.prototype。好吧,如果有人愚蠢到修改 Object.prototype,谁又能说他们不会做任何与现有原型(prototype)冲突的事情呢?例如,如果有人运行这个:

Object.prototype.hasOwnProperty = function () {
return !!'I am stupid';
};

如果这是第一个脚本运行,这是否意味着对于页面其余部分的每个脚本,实际上不可能安全地迭代一个对象?

最佳答案

您可以创建一个临时 IFRAME 元素,并从其 Object.prototype 对象中检索方法:

(function () {
var frame = document.createElement( 'iframe' );
frame.style.display = 'none';
document.body.appendChild( frame );
Object.prototype.hasOwnProperty = frame.contentWindow.Object.prototype.hasOwnProperty;
document.body.removeChild( frame );
}());

现场演示: http://jsfiddle.net/ARycC/2/

关于javascript - 有什么方法可以从更改 Object.prototype.hasOwnProperty 的人那里恢复过来吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11092707/

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