是否可以在 promise 执行器函数中设置 `this` 的值?

Is it possible to set the value of `this` inside a promise executor function?

在这段代码中是否可行:

var this_module = {

    foo: 'something'

    promise: new Promise (function(resolve, reject) {

        resolve (this.foo);
        })
}

this 的值设置为 this_module 以便 this.foo 将是 foo: 'something'?

您需要使用 getter 语法:

var this_module = {

    foo: 'something'

    get promise() {
       return new Promise (function(resolve, reject) {
          resolve (this.foo);
       }.bind(this))
    }
}

这是因为在向对象添加 属性 时没有初始化对象本身 promise: new Promise()
在 getter 中,对象已经初始化,回调可以与 this 对象绑定(see more 关于 .bind())。

注意:每次访问 属性 时都会 return 一个新的承诺(感谢@Felix)。

不调用 new Promise 对象创建之后:

this_module.promise = new Promise(function(...) { ... }.bind(this_module));

这与 Self-references in object literal declarations 中涉及的问题基本相同:您试图在初始化期间访问对象实例,这是不可能的。