计算 属性 个名字和这个 - 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(); // ?
这个的值是不同的,因为当时代码是运行,上下文是不同的。
我可以在计算的 属性 名称中使用 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(); // ?
这个的值是不同的,因为当时代码是运行,上下文是不同的。