欢迎光临
我们一直在努力

new Promise 中的this指向

new Promise中,‌this的作用域取决于函数是如何被调用的。‌

在JavaScript中,‌this的指向是基于函数被调用的方式决定的。‌当使用new关键字调用一个函数时,‌this通常指向新创建的对象。‌在new Promise的情况下,‌this指向的是新创建的Promise对象本身。‌这意味着,‌如果在Promise的构造函数内部定义了方法,‌并且这些方法内部使用了this,‌那么这些方法中的this将指向Promise对象本身。‌

例如,‌考虑以下代码:‌

new Promise((resolve, reject) => {
// 在这里,‌this指向新创建的Promise对象
console.log(this); // 输出Promise对象
// ... 其他代码 ...
});

然而,‌需要注意的是,‌如果在Promise的.then().catch()方法中使用箭头函数,‌并且该箭头函数内部使用了this,‌那么这个this将不会指向Promise对象,‌而是捕获其所在上下文的this值。‌这是因为箭头函数不绑定自己的this,‌而是从它的封闭词法上下文中继承this值。‌

例如:‌

new Promise((resolve, reject) => {
// 假设这里的this指向某个对象obj
let obj = { /* ... */ };
obj.promise = new Promise((resolve, reject) => {
// 在箭头函数中使用this,‌它将指向obj,‌而不是Promise对象
setTimeout(() => {
console.log(this); // 输出obj,‌而不是Promise对象
}, 1000);
});
});

综上所述,‌new Promise中的this指向新创建的Promise对象本身,‌但在Promise的.then().catch()方法中使用箭头函数时,‌需要注意箭头函数中的this将不会指向Promise对象,‌而是捕获其所在上下文的this值。

赞(1)
版权归原作者所有,如有侵权请告知。达维营-前端网 » new Promise 中的this指向

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址