MooTools 和数组原型
MooTools and Array prototype
Mootools 正在覆盖 Array 原型,问题是这个原型和我有一个外部 .js(我无法手动修改的库)使用 for(i in someArray)
进行迭代并且它抛出异常,因为现在 Array 有更多的属性。关于如何克服这个问题的任何想法?我正在考虑从 Mootools 库本身的数组中删除这些属性,但似乎并不那么容易。
首先,您应该在数组上使用常规 for(var i=0; i < arr.length; i++) { var el = arr[i]; }
循环。
如果你确实需要for..in
并且你在现代浏览器中工作,那么你可以修改对原型的修改使其不可枚举。
//Logger function
function logArray(arr) {
console.log("--TEST-START--");
for (var i in arr) {
console.log(arr[i])
}
console.log("--TEST-END--");
}
//Modify prototype
Array.prototype.a = {
b: 0
};
//List to test against
var list = [1, 2, 3, 4];
//Log initial list
logArray(list);
//Modify prototype modificiation
Object.defineProperty(Array.prototype, 'a', {
enumerable: false
});
//Log initial list
logArray(list);
Mootools 正在覆盖 Array 原型,问题是这个原型和我有一个外部 .js(我无法手动修改的库)使用 for(i in someArray)
进行迭代并且它抛出异常,因为现在 Array 有更多的属性。关于如何克服这个问题的任何想法?我正在考虑从 Mootools 库本身的数组中删除这些属性,但似乎并不那么容易。
首先,您应该在数组上使用常规 for(var i=0; i < arr.length; i++) { var el = arr[i]; }
循环。
如果你确实需要for..in
并且你在现代浏览器中工作,那么你可以修改对原型的修改使其不可枚举。
//Logger function
function logArray(arr) {
console.log("--TEST-START--");
for (var i in arr) {
console.log(arr[i])
}
console.log("--TEST-END--");
}
//Modify prototype
Array.prototype.a = {
b: 0
};
//List to test against
var list = [1, 2, 3, 4];
//Log initial list
logArray(list);
//Modify prototype modificiation
Object.defineProperty(Array.prototype, 'a', {
enumerable: false
});
//Log initial list
logArray(list);