gpt4 book ai didi

javascript - 引用 ES.next 静态类属性的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-30 15:44:49 28 4
gpt4 key购买 nike

我有以下代码,它按预期工作,但我不相信这是正确的方法:

'use strict';

class Upload {
static uploadCount = 20;

constructor(props) {
Upload.uploadCount++;
}

static get count() {
return this.uploadCount;
}
}

const up1 = new Upload({
name: 'Wow.pdf',
size: 123123,
});

const up2 = new Upload({
name: 'doit.pdf',
size: 9999999,
});

console.log(Upload.count);

为什么 constructor 不能像静态 getter 那样通过 this.uploadCount 引用静态变量?是否有更好/正确的方法来跟踪实例化的 Upload 对象的数量?

最佳答案

构造函数中的

this 指的是刚刚创建的对象实例。静态属性是构造函数本身的属性,而不是实例。因此,如果您想从实例方法中引用它们,则必须使用 Upload.uploadCount 中的构造函数名称。


仅供引用,您使用的语法:

static uploadCount = 20;

不是 ES2015 的标准部分,我唯一确定它可以工作的地方是 Babel。如果您想要可移植的代码并且不使用 Babel,则不应使用该语法。你可以换成老式的:

Upload.uploadCount = 20;

并将其放在类定义之后并具有可移植性。


仅供引用,你为静态属性使用的语法是为 future 的 JS 修订提出的,但最后我检查它还没有决定。

关于javascript - 引用 ES.next 静态类属性的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40229886/

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