MooTools and Array prototype



mootools覆盖了数组原型,问题在于,这个原型和我有一个外部.js(我无法手动修改的库)使用 for(i in someArray)迭代,并且是抛出异常,因为现在数组具有更多的属性。关于如何克服这个问题的任何想法吗?我正在考虑从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);

最新更新