gpt4 book ai didi

javascript - ES6 类中的变量和函数声明

转载 作者:搜寻专家 更新时间:2023-11-01 05:09:18 25 4
gpt4 key购买 nike

我正在学习 es6 js 并找到了一种声明类并使用其方法的方法。

但有一件事令人困惑,我想知道这一点。

class myGender {
var gender = "male";
printMyGender(){
console.log(gender);
}
}

const gender = new myGender();
gender.printMyGender();

在上面的代码中,我遇到错误,为什么我无法在同一类和其他场景中访问性别变量

class myGender {
constructor(){
this.gender = "male";
}
printMyGender(){
console.log(this.gender);
}
}

const gender = new myGender();
gender.printMyGender();

这很有魅力!

最佳答案

在 javascript 中,变量属性 之间存在巨大差异。使用 var, let, const 声明变量,然后您可以使用赋值运算符 (=) 为它们赋值。变量是当前范围的一部分({} 之间的所有内容),它们与对象无关。属性是对象的一部分。它们没有被声明,它们在被赋值后存在,直到它们被删除。所以实际上您不需要初始化它们。然而,这可能会导致一些非常有趣的行为:

class Counter {
increase(){
this.count += 1;
}
}

const count = new Counter;
count.increase()
console.log(count.count); //NaN

因此,在构造函数中初始化它们是一个很好的做法:

class Counter {
constructor(){
this.count = 0;
}
increase(){
this.count += 1;
}
}

为了美化这一点并让其他语言的开发人员更熟悉它,有一个关于类属性的提案(它可能是 future 的一个特性):

class Counter {

count = 0;

increase(){
this.count += 1;
}
}

然而,这只是上面代码的语法糖。

关于javascript - ES6 类中的变量和函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47960160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com