首页 > 解决方案 > 为什么 jQuery-migrate 不直接在代码中替换折旧的函数?

问题描述

我在一个大项目上使用 jQuery-migrate。我纠正了所有可能的警告,但现在警告在库中。

有些库不再更新,因此我无法更新它们以使它们与 jQuery-3.3.1 一起使用。另外,我不能直接在库中替换折旧的函数,因为它会产生错误。

所以我认为我会在我的项目中保留 jQuery-migrate。

我的问题是:如果 jQuery-migrate 能够在调用时更正折旧的函数,为什么它不能直接在代码中更正它们?

标签: javascriptjqueryjquery-migrate

解决方案


JavaScript 不适合静态代码分析。

假设您需要替换该foo功能。

如果调用它的代码很简单,那将是相当微不足道的:

something.foo();

如果是这样的话,它会变得相当困难:

function call(bar, method) {
    bar[method]();
}

call(something, "foo");

……如果到达那里所需的逻辑更复杂,那就更难了。


如果有任何东西试图在运行时访问它,那么创建something.foo它就存在了,这要简单得多。


推荐阅读