IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    关于JavaScript中callback函数的this指针重定义

    死月·吃圡蕾特发表于 2016-12-27 07:54:03
    love 0

      最近在写 NBUT Virtual Judge 的内核框架,用的又是 Node.JS 了,把它当作一个本地运行的脚本不断进行轮询。

      众所周知JS中的一个精髓就是异步回调。

      所以在我自己写的框架中也经常会出现类似于下面的代码:

    foo.bar(a, b, function(){});

      总而言之就是写一个函数,这个函数将会调用一个回调函数。

      但是问题出现了:在那个回调函数 function 中,你如果使用了一个 this 指针的话,它将会指向根,而不是 foo 的本体。

      那么如果我们想在 function 中也用 this 来指代这个 foo 对象该怎么办呢?

      结果还是IRC有用。本人跑 Node.JS 的 IRC 上问了这个问题,结果有人就这样回复我了:

    13:07 <shama> xadillax: foo(a, b callback.bind(foo))

    13:10 <olalonde> foo (a, b fn) { fn = fn.bind(this); …. }

      然后还很热心地给了我个网址:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

      总之最后得出的结论就是说:

      你只要给你的 callback 函数指定一个 this 指针即可。

      如:

    var cb = callback.bind(foo);
    foo.bar(a, b, cb);

      这样就能在回调函数中使用foo来作为其this指针了。



沪ICP备19023445号-2号
友情链接