javascript - 阻止 javascript 原型(prototype)设计杀死 for 循环

标签 javascript prototypejs

与我一起工作的一些人在他们的网站上包含了我编写和托管的一些 javascript。但其中一些网站使用prototype.js或其他一些框架,这导致了一些大问题。

例如:

var test = {"one":[{"a":"b"}]};
for (var i in test.one) { console.log(i); }

控制台中的预期结果将是“0”(i 是该数组的键)

但是如果我访问像prototypejs.org这样的网站并在firebug的控制台中运行相同的代码,我会得到所有原型(prototype)垃圾的列表(每个,每个Slice等..)

尝试在 stackoverflow 上的控制台中运行它,它按预期返回“0”。

如何防止这种情况发生?有什么好的解决办法吗?

最佳答案

要么测试您枚举的每个属性不在原型(prototype)中

for (var i in test.one) { 
   if (test.one.hasOwnProperty(i)) {
      console.log(i); 
   }
}

或者不枚举数组。

for (var i = 0, ii = test.one.length; i < ii; i++) {
     console.log(i);
}

任何扩展Object.prototype的代码都不是你的问题。您不必对此有所警惕。

关于javascript - 阻止 javascript 原型(prototype)设计杀死 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998981/

相关文章:

javascript - 我可以将 ajax 放在 React 组件构造函数中吗?

javascript - 确定本地 iframe 是否已加载的 chalice

IE9 中的 Magento 站点,原型(prototype)错误

javascript - JSON.parse(JSON.stringify(e)) 将对象转换为字符串

jquery - 关于复杂 ajax 的最佳 jQuery/Prototype 书籍?

javascript - 共享 Web Workers 是否在单个页面重新加载、链接导航中持续存在

javascript - 道场拖放

javascript - Angular 7 Guard 重定向仅适用于双击

javascript - 禁用点击事件处理程序

javascript - float 栏 javascript(原型(prototype)或脚本)