这个问题已经存在了几年.
我正在为一个名为Discuz的论坛引擎编写一些插件,我为自己的项目使用了很多Mootools.当我把Mootools插入这个论坛引擎(discuz)时,事情变得疯狂……
在我去年做了一些调试后,我发现问题是Mootools原型很多核心元素,包括Array,而另一方面,这个论坛引擎使用了一个Forof(i in Array)Loop for’array ”.这肯定会导致问题,因为
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()’
但我认为这是一个非常糟糕的解决方案,因为你知道,导致更多问题……新版本,错误代码……等等
我想知道是否有解决这个问题的工作?没有触及任何这个论坛引擎的js代码,还使用Mootools?
我知道使用For(.. in)for Array是不好的,但我的问题是我不想触摸这个论坛引擎的javascript代码,我只想要一个解决方案来过载问题
最佳答案 你应该使用你提到的hasOwnProperty().我不确定为什么你认为这会导致更多的问题,实际上使用for(x in y)循环我会倾向于默认使用hasOwnProperty()并且只在特殊情况下省略它.
话虽如此,我不会在数组上使用for(x in y)循环.通常使用(i = 0; i