MooTools和Array原型

Mootools重写了Array原型,问题是这个原型和我有一个外部的.js(我无法手动修改的库)迭代使用for(i in someArray)并且抛出了异常,因为现在Array有更多的属性。 任何想法如何克服这个问题? 我正在考虑从Mootools库本身的数组中移除这些属性,但看起来并不那么容易。


首先,你应该使用一个正则for(var i=0; i < arr.length; i++) { var el = arr[i]; } 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);
链接地址: http://www.djcxy.com/p/94023.html

上一篇: MooTools and Array prototype

下一篇: Pros/Cons of not using the prototype chain and returning objects instead