与我一起工作的一些人在他们的网站上包含了我编写和托管的一些 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/