gpt4 book ai didi

javascript - Mootools 使用 For(...in Array) 时的问题

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

这个问题已经存在了几年。

我正在为一个名为 Discuz 的论坛引擎编写一些插件,我在自己的项目中使用了很多 Mootools。当我将 Mootools 插入这个论坛引擎(discuz)时,一切都变得疯狂了......

经过去年的调试,我发现问题是Mootools原型(prototype)化了很多核心元素,包括Array,而且,另一方面,这个论坛引擎使用了一个lof的For(i in Array) Loop对于“数组”。这肯定会引起问题,因为

for(i in [1,2,3,4,5]) console.log(i);  //0,1,2,3,4 the keys in this array 

**WITH MOOTOOLS
for(i in [1,2,3,4,5]) console.log(i);
//OUTPUT 0,1,2,3,4,$family,$constructor,pop,push,reverse,shift,sort,splice.......

上次我使用解析器更改所有 for(i in array) 循环以添加“if item.hasOwnProperty()”以绕过这些原型(prototype)但我认为这是一个非常糟糕的解决方法,因为你知道,会导致更多问题...新版本,错误代码...等等

我想知道是否有解决此问题的方法?不接触任何这个论坛引擎的 js 代码,还使用 ​​Mootools?

我知道对 Array 使用 For(..in ) 是不好的,但我的问题是我不想碰这个论坛引擎的 javascript 代码,我只是想要一个解决过载问题的方法

最佳答案

你应该使用 hasOwnProperty()正如你提到的。我不确定为什么你认为这会导致更多问题,确实是 for(x in y)循环我倾向于使用 hasOwnProperty()默认情况下,只有在特殊情况下才会省略它。

话虽如此,我不会使用 for(x in y)在数组上循环。通常最好使用标准 for(i=0; i<y.length; i++)循环当然会忽略所有非数字属性。 (除非你知道你有非连续的数组索引,在这种情况下 for(x in y) 将跳过未使用的索引,但即使在那种情况下我可能仍然使用标准 for 并测试 undefined在循环中。)

更新:好的,我现在明白了。您的解决方法是插入 hasOwnProperty()如果您想继续使用 MooTools,这是我能想到的最佳解决方案。在结束后立即插入它应该合理安全)for :您不需要检查现有的 {}括号或添加您自己的。

关于javascript - Mootools 使用 For(...in Array) 时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7034837/

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