Я хотел бы создать класс BankAccount
, в котором новый экземпляр отслеживает проверку и сохранение нового экземпляра. Однако всякий раз, когда кто-то создает новый экземпляр, мне нужен статический метод, который вызывает статическое поле, привязанное исключительно к классу BankAccount
, где он отслеживает, сколько банковских счетов открыто (что-то вроде поведения синглтона). Это выполнимо в С#/java, но с трудом воссоздает предполагаемое поведение в Javascript.
Я пытался сделать это и в 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 между прочим)
BankAccountMaker
. - person Bergi   schedule 30.05.2017IncrementcountOfAccounts
2) ПоместитеBankAccount
внеBankAccountMaker
, это не замыкание, которому нужен доступ к счетчику - это позволит избежать повторного создания идентичных классов. Затем, чтобы преобразовать его в ES6, просто сделайтеBankAccount
class
. - person Bergi   schedule 30.05.2017