js Function.prototype.call.bind(Array.prototype.slice),为啥要这么写?

在看别人的源码的时候看到的

 var slice=Function.prototype.call.bind(Array.prototype.slice),

 function fireSync(eventName) {
    _fire_func(eventName, slice(arguments, 1));
  }
      

这么写有啥好处?

阅读 3.4k
3 个回答

不知道你说的是这个赋值还是这个bind?就这个赋值而言,应该算是js的编码规范吧,这样避免了每次调用都要一步一步的引用,效率高。而bind方法就是给一个方法的this赋上值,你下次调用该方法的时候this就是你bind的参数。

新手上路,请多包涵
var slice=Function.prototype.call.bind(Array.prototype.slice),

代码的意思是绑定(Array.prototype.slice)对象 到call原型方法中的this。
转义为Array.prototype.slice.call

由此slice(arguments, 1)是不是跟Array.prototype.slice.call(arguments, 1)一个意思了。

这样定义过的slice方法就可以直接调用了。重复写的话代码简短了。

纯属个人理解。希望能帮到你。

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