计算 属性 个名字和这个 - JS

computed property names and this - JS

我可以在计算的 属性 名称中使用 this 吗? 像这样:

class User {
  constructor(username) {
    this._username = username;
  }

  [this._username + "Print"]() {
    console.log(this._username);
  }
}

const u = new User("MORA");
u.moraPrint(); // ?

而且我知道它在这种情况下没用。

如果你在你的构造函数中定义你的函数,它可以做到:

class User {
  constructor(username) {
    this._username = username;
    this[username + "Print"] = function () {
    console.log(this._username);
    
    }
  }
}



const u = new User("mora");
u.moraPrint(); // ?

可以使用计算的 属性 名称创建 class 函数,但如评论中所述 this 届时不会初始化,因为没有对象实例。

您可以通过 运行 宁这个(双关语)代码来检查:

item = 'hey'
class User {
  constructor(username) {
    this._username = username;
  }

  [this.item + "hello"]() {
    console.log('hello ' + this._username);
  }
}

const u = new User("MORA");
u.heyhello(); // ?

这个的值是不同的,因为当时代码是运行,上下文是不同的。