2017-05-24T09:37:43Z||2017-05-24T09:37:43Z


今天遇到的的问题,setTimeout里的this指向了window:

setTimeout(function() {
  console.log(this); // window
}, 500);

哎,这个JavaScript的this作用域真是烦人啊,怎么办呢?可以用call,不过写起来不雅观,于是可以在外把外层的this缓存起来用,代码就是这样:

var outerThis = this;
setTimeout(function() {
  console.log(outerThis);
}, 500);

这还不是最好的,ES6后可以直接用箭头函数:

setTimeout(() => {
  // 这里的this不是window
}, 500);