var length = 10; function fn(){ alert(this.length) } var obj = { length: 5, method: function(fn) {
fn();// 10 arguments[0]()//2 } } obj.method(fn,length)
这里为什么会输出2呢,实际上拆开来看,arguments[0]();就是fn();但是这里的this确是指向argument对象。
所以arguments对象里面的length属性是指向参数的个数,那么这里就是2.所以一定要注意这个this啊!