javascript中array方法调用返回window对象

array中的很多方法通过callapply调用时会返回window对象,如下写法在firefox、chrome等浏览器中会取到window对象:

window === ([]).sort.call();window === ([]).reverse.call();([]).concat.call()[0] === window

可以将这些array的方法重写,避免它在运行时的this指向window,如重写sort方法:

Array.prototype.sort = (function(sort) {    return function(callback) {        return (this == window) ? null : (callback ? sort.call(this, function(a, b) {            return callback(a, b)        }) : sort.call(this));    }})(Array.prototype.sort);