【发布时间】:2019-08-17 01:17:00
【问题描述】:
我正在创建一个定义以下类的项目:
class BankAccount {
constructor(balance=0){
this.balance = balance;
}
withdraw(amount){
if(this.balance - amount >= BankAccount.overdraftlimit){
this.balance -= amount;
}
}
}
BankAccount.overdraftlimit = -500;
我的问题是关于属性的定义overdraftlimit
这是定义让我们调用全局属性的最佳方式吗?
或者应该更好地在constructor 之内定义它
this.overdraftlimit = -500;
谢谢!!
【问题讨论】:
-
这取决于您的域。不同的银行账户可以有不同的
overdraftlimit吗?银行账户应该能够改变它吗? -
感谢您的回复。不可以,其他银行账户不能变异,不同的银行账户会有不同的透支额度
-
如果透支限制不是任何特定实例的一部分,那么将其定义为类本身的一部分是有意义的。否则将其作为您的实例状态的一部分。
-
我个人会在构造函数中将此属性设置为默认值,并为其创建 setter 和 getter
-
好的,所以我明白如果它被定义为类的一部分是独立于实例的,任何实例都不能改变它。
标签: javascript node.js class ecmascript-6