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

例如:

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


预期结果将在控制台中为“ 0”(我是该阵列的键)

但是,如果我进入诸如prototypejs.org之类的站点并在firebug的控制台中运行相同的代码,我会得到所有原型垃圾的清单(每个,每个Slice等)。

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

我该如何预防?有什么好的解决方法?

最佳答案

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

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的代码都不是您的问题。您不必对此提防。

09-10 01:05
查看更多