在回调函数中访问外部的 this:let that = this
在JavaScript中, this 的值不是固定的,而是 取决于函数被调用的方式 。在嵌套函数、回调函数或异步操作中, this 的指向经常会发生变化,导致无法访问外部作用域中的对象。
通过将外部作用域的 this 赋值给一个变量(通常命名为 that 、 self 或 _this ),可以在内部作用域中保留对原始对象的引用,确保能够访问到正确的上下文。
function MyObject() {this.value = 1;// 保存外部作用域的this引用let that = this;setTimeout(() => {console.log(this.value); // undefined,这里的this指向全局对象或windowconsole.log(that.value); // 1,通过that访问到了外部作用域的this}, 1000);
}
总结来说, let that = this 是一种经典的JavaScript编程模式,用于解决作用域嵌套导致的this指向问题。