今天发现了一个有趣的 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 了 这么简单的问题。我竟然刚开始没懂 _

posted on 2017-06-19 18:06  杨文鹏  阅读(150)  评论(0)    收藏  举报

导航