今天发现了一个有趣的 this 问题.
今天我朋友问我了一个问题 下面贴出代码
var length = 10;
function fn() {
console.log( this.length )
};
var obj = {
length: 5,
mathod: function( fn ){
fn();
arguments[ 0 ]();
}
};
obj.mathod( fn, 1 );
然后问我 为什么打印的是 10 和 2啊
然后我一瞅 10 完全没问题。this 会去找定义函数的上下文对象,2 又是从哪里来的 。难道是伪数组对象 arguments ? 打了断点瞅了下,还真是。(原谅我还从来没有关注过这种类型的问题).
那么剩下的就简单了,来个测试:
var arr = [function(){
console.log(this); // arr
}];
arr[0]();
这里就再次验证了 函数中的
this会去找定义函数的上下文对象。
好吧 , 我承认我 OUT 了 这么简单的问题。我竟然刚开始没懂 _
浙公网安备 33010602011771号