迭代器中...的 Javascript 原型(prototype)?

标签 javascript mootools prototype-programming

由于我在这里发布的问题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 。但是,这在这种情况下可能不切实际。

我的建议是:

  1. 修复代码
    • 应该使用hasOwnProperty对于关键迭代,或者;
    • i < arr.length用于数组索引迭代。
  2. 防止 mootools 弄乱内置对象的原型(prototype)。
    • 请参阅 mootools 文档(我不使用 mootools)。
  3. 使用不会干扰内置对象原型(prototype)的框架。
    • jQuery 不会扰乱原型(prototype)。

祝你编码愉快。

关于迭代器中...的 Javascript 原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7036097/

相关文章:

javascript - 使用 this 和 prototype 在 JavaScript 中定义类的方法有什么区别?

javascript - 在 Laravel 4 中使用 AJAX 提交表单

javascript - 类型 'auth'/home/kartik/Desktop/Ecommerce/ecommerce/node_modules/firebase/index") 上不存在属性 'typeof import("")'.ts(2339)

javascript - 一个函数可以被认为类似于一个类吗?

javascript - 按文本查找选择选项

Javascript原型(prototype)和修改原始对象

javascript - 在函数对象中分配函数而不调用函数本身

javascript - 从 jquery 转换为 mootools 时出错?

javascript - Shopify 液体 : How to only show a compare at price for a product variant if the compare at price exists?

javascript - 如何在 JS 中调用 thunk 来访问子对象属性?