我想创建一个BankAccount
类,其中新实例跟踪新实例的检查和节省。然而,每当有人创建一个新实例时,我想要一个静态方法,它调用一个静态字段,该字段仅与BankAccount
类相关,该类可以跟踪有多少银行帐户已打开(有点像单例行为)。这在c#/ java中是可行的,但很难在Javascript中重新创建预期的行为。有问题在ES6类中创建静态字段(非方法,基元)?
我在ES5尝试这很好,但短了,我来我一直在寻找使用功能的包装来封装行为最接近的事:
function BankAccountMaker() {
var countOfAccounts = 0;
function IncrementcountOfAccounts() {
countOfAccounts += 1;
}
function BankAccount(c = 0) {
this.checking = 0;
}
return {
makeBankAccount: function (c) {
IncrementcountOfAccounts();
console.log(countOfAccounts)
return new BankAccount(c);
}
}
}
最终,几个要求:
- 有人可以编码ES6相当于上述?
- 另外,有没有更好的方法来做到这一点在ES5中,我不需要包装?
- 在ES5中,我们可以将原型方法设置为原语,但似乎并不像ES6语法那样呢? (我正在使用Node 6.1和Babel fwiw)
“*静态字段只绑BankAccount类,保存着众多的银行账户是如何开放轨道*” - **不要**。这正是为什么(全局/静态,可变)单身人士不好。它泄漏内存并且不是模块(不可测试)。将跟踪记录保存在创建实例的方法中。完全像你对你的'BankAccountMaker'所做的一样。 – Bergi
“* ES5中我们可以如何将原型方法设置为原语,但似乎并不像ES6语法那样?*” - 请为此提出一个单独问题,并为您的意思提供示例代码。顺便说一下,方法不是原语。 – Bergi
对代码的改进:1)内联'IncrementcountOfAccounts' 2)将'BankAccount'放在'BankAccountMaker'之外,它不是需要访问计数的闭包 - 这将避免重新创建相同的类。然后将其转换为ES6,只需将“BankAccount”设置为“类”即可。 – Bergi