gpt4 book ai didi

javascript - 是否可以注销 Javascript 原型(prototype)扩展

转载 作者:行者123 更新时间:2023-11-29 22:42:10 26 4
gpt4 key购买 nike

我知道使用 for..in 循环遍历 Array 不是推荐的迭代方式。但我很想知道是否有办法注销这些扩展。我曾与 Groovy 合作过,在 Groovy 的情况下,有一个注册表可以在运行时进行操作,以删除通过元类指定的其他条目。

我当前的用例是 Prototype 正在为 Array 原型(prototype)添加扩展。由于我使用了大量基于 jQuery 的插件(我确实使用 jQuery),我必须测试网站的大部分功能以确保一切正常。这是相当令人生畏的。至于我为什么要使用 Prototype 和 jQuery,好吧,我现在别无选择。

我也明白,注销(如果可能的话)这些扩展绝不是所有代码和谐共存的解决方案,因为这意味着对现有实例和新实例的破坏性更改。会有许多依赖于这些扩展的匿名函数,并且稍后会失败。我只是好奇地想了解 javascript 实现和对底层逻辑的可能访问。

谢谢内存

最佳答案

for 循环的问题是某些库(原型(prototype))将属性添加到基础对象,这导致它们被 for 循环枚举。

下面的循环将遍历所有添加到基础的自定义属性反对并从原型(prototype)中删除它们,使得对数组使用“for in”变得安全

for (var prop in {}) {
delete Object.prototype[prop]
}

但是,正如您所提到的,这会破坏原型(prototype)本身。如果你使用原型(prototype),你应该使用他们的迭代方法之一。但我不明白你想用这个问题得到什么,所以我只是解释了如何撤消原型(prototype)所做的事情。

关于javascript - 是否可以注销 Javascript 原型(prototype)扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1999847/

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