与我一起工作的一些人在他们的网站上包含了我编写并托管的一些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
的代码都不是您的问题。您不必对此提防。