class MyPromise {
// 构造方法
constructor(executor) {
// 初始化值
this.PromiseResult = null // 终值
this.PromiseState = 'pending' // 状态
// this.initBind()
// 执行传进来的函数
executor(this.resolve, this.reject)
}
initBind() {
// 初始化this
this.resolve = this.resolve.bind(this)
this.reject = this.reject.bind(this)
}
resolve(value) {
console.log("this===>", this) // 疑惑点
this.PromiseState = 'fulfilled'
this.PromiseResult = value
}
reject(reason) {
this.PromiseState = 'rejected'
this.PromiseResult = reason
}
}
const test1 = new MyPromise((resolve, reject) => {
resolve('success')
})
执行上述代码,注释this绑定后,resolve函数里的this指向undefined,这里不太理解,为什么指向undefined,有大佬解释:因为resolve 函数是作为回调函数传递给 executor 函数的,而不是直接调用的,属于普通函数的调用方式, 因为没有特定的上下文 所以指向undefined。仍不理解,普通函数的调用,this不是指向window吗?所以在此记录问题,以便后期翻找