gpt4 book ai didi

javascript - Prototype 的 DOM 扩展与第 3 方 JS 库发生冲突——我最好的选择是什么?

转载 作者:行者123 更新时间:2023-12-02 20:45:32 26 4
gpt4 key购买 nike

我刚刚花了近 2 个小时调试第三方 JavaScript 库,结果发现我传递给该库的数组在管道中的某个地方被转换为字符串......我不知道为什么或如何发生这种情况,但一旦我从项目中删除 Prototype,一切都会恢复正常。

这可能是因为 Prototype 扩展了 DOM 吗?我最好的选择是什么?我在项目中使用了 Prototype 的元素迭代器、DOM 操作、bind() 方法和字符串操作器,而且我不想丢失它们。

是否有一个库拥有所有这些功能,但可以与对 DOM 扩展敏感的第 3 方 JS 库一起正常工作?

最佳答案

过去曾使用过 Prototype,但没有办法让它“发挥得很好”(类似于 jQuery 的 noConflict 模式)。

Prototype 背后的方法本身就阻止了这种情况的发生。 Prototype 的面包和黄油来自于它的 Object.extend() 方法,当您使用 Prototype 方法操作对象时,该方法就会在对象上调用。更不用说 Prototype 在干扰你的 JavaScript 对象之前已经修改了核心 JavaScript 对象。

另一方面,jQuery 完全独立于 jQuery 对象(据我所知,它在包含时添加到 JavaScript 命名空间中)。

是否还有其他具有类似功能的库?当然,事实上,我确信您现在已经厌倦了听到这些,但您可能可以使用 jQuery 完成大部分工作。但是,您无法避免不可避免的事情:重写代码。它不会以与任何其他框架相同的方式完成,更不用说给您相同的结果/行为。

您的选择是:

  • 放弃原型(prototype)并重写使用它的东西来使用其他东西
  • 放弃第三方库,转而选择替代方案或完全不使用
  • 重写prototype.js或thirdpartytool.js以更好地发挥作用(当然,这是一个可怕的黑客,当你想在未来新版本发布时“升级”一个或两个工具时,它会导致更多头痛出)

关于javascript - Prototype 的 DOM 扩展与第 3 方 JS 库发生冲突——我最好的选择是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313420/

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