this的指向和apply的问题

function add(a,b) {
  return a+b
}

var se = seriz(add);

function seriz(fn) {
  return function (){
      return fn.apply(this,arguments);
  }
}

console.log(se(1,2))

看不懂seriz里面的操作,有没有大神简单一下。return function是为啥,fn.apply(this,arguments); this 指向哪?

阅读 1.6k
2 个回答

1、return function 这个是因为上面的se变量要赋予一个函数。
2、fn.apply(this,arguments);这个this指像是window,window下是没有arguments,所以需要apply方法来指向fn,也就是add,如果直接执行fn(arguments)的话是会报undefined的

新手上路,请多包涵

this的指向简单的说就是谁调用我这个函数,我就指向谁。
上面的代码可以看成是:
var se = function (){

  return add.apply(this,arguments);

};
console.log(window.se(1,2));
se最后是被window调用,所以它内部的this最终指向window。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题