由于我在这里发布的问题Mootools when using For(...in Array) problem关于一些JavaScript框架将原型(prototype)化Array对象,而其他一些代码(论坛引擎)确实使用For...in循环来循环数组,当我将JavaScript框架插入这些现有代码时,事情就会出错。
//BEFORE
for(key in [1,2,3,4]) console.log(key) //0,1,2,3 keys of the array
//After JS Framework
for(key in [1,2,3,4]) console.log(key) //0,1,2,3,$family,$constructor,pop,push,reverse,shift,sort,splice
鉴于我无法触及包含这些 For..In Array 循环的原始代码,并且我还想使用 javascript 框架(mootools)
我可以通过例如javascript 迭代器的原型(prototype)??
以某种方式重载 For...In 循环,使我所有的 javascript For...in 循环扫描数组类型并且只返回值而不返回函数?我不知道该怎么做,但我想知道这是否可以做到?
最佳答案
原来的代码被破坏了......这真是一个耻辱。
使用 Mozilla JavaScript - 不要将 Mozilla JavaScript 扩展与 ECMAScript 混淆 - 可以为对象定义自定义迭代器。请参阅What's new in JavaScript 1.7 。但是,这在这种情况下可能不切实际。
我的建议是:
- 修复代码
- 应该使用
hasOwnProperty
对于关键迭代,或者; -
i < arr.length
用于数组索引迭代。
- 应该使用
- 防止 mootools 弄乱内置对象的原型(prototype)。
- 请参阅 mootools 文档(我不使用 mootools)。
- 使用不会干扰内置对象原型(prototype)的框架。
- jQuery 不会扰乱原型(prototype)。
祝你编码愉快。
关于迭代器中...的 Javascript 原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7036097/