(我使用谷歌翻译)
class User{
name="tom"
showName(){
console.log(this.name)
}
}
const tom = new User()
console.log(tom.name)
上面的代码输出Tom。但是如果我像这样改变第二行,我就会得到一个错误。
var name="Tom"
let name="Tom"
const name="Tom"
this.name="Tom"
类字段语法的设计方式,这样一行可以做一件事情:它分配给实例的一个属性。
this.name = "tom"
在语法上是不允许的,因为它是多余的。
var name =
和其他变量不允许在该位置,因为它们是变量声明关键字(var
,let
,const
) -使用哪个关键字对新创建的变量的作用域有不同的含义,以及它是否可以重新分配。但是这在类字段的上下文中是没有意义的,因为你不是在创建一个新的标识符,你是在给一个对象的属性赋值。
class User{
name="tom"
与
相同class User{
constructor() {
this.name = "tom";
}
name
不是在特定作用域中创建的新变量——它只是一个属性,因此在声明var
、let
或const
时会混淆两个完全不同的概念,因此禁止使用。
所以你只能做
class User{
name="tom"
(除非您希望属性是私有的(只能从类内部使用),在这种情况下,在属性名的前面加上#
。)
class User{
#name="tom"
我认为你想要的问题是知道在js类中声明变量的另一种方式。因此,你可以使用构造函数来实现这一点,像这样:
class User{
constructor() {
this.name = "tom"
}
showName(){
console.log(this.name)
}
}
const tom = new User()
console.log(tom.name)
将打印"tom"。