Окей.
Во-первых, ты не прав в том, что тебе ответил создатель кофескрипта. Создатель -
Jeremy Ashkenas, vendethiel - просто контрибьютор с
парой десятков коммитов
Во-вторых, ты не прав в том, что считаешь, что они вообще тебе чем-то обязаны. Не хотят вводить приватные свойства твоей реализации, не хотят вводить приватные свойства вообще - их право, что-то не нравится - пили форк, гитхаб для того и предназначен. Наезжать на них за это - верх кретинизма (как будто тебя кто-то послушает, лол) и неблагодарности.
Цитата:
|
Приватное свойство не будет доступно из вне инстанса так как у свойств будет использоваться префикс, который человек обязан будет не использовать из вне. этот префкс либо пробел либо _, таким образом достигается инкапсуляция внутренних свойств внутри класса. второе: свойство не будет доступно классам наследникам так как будет использоваться уникальный для класса префикс в стиле Math.random(), таким образом будут 2 префикса, один для защиты от доступа из вне обьекта _ второй для защиты доступа из дочерних классов
|
Цитата:
|
устанавливать эти свойства энумерабле false чтобы они еще и не итерировались извне
|
В таком виде, как по мне, вполне пойдет.
Только два момента:
1) на гитхабе ты про рандомную прибавку к имени свойства ничего не говорил;
2) зачем вообще трахаться со всеми этими префиксами/суффиксами, когда можно просто заюзать символы из ES6? Заодно гарантировано исключается возможность коллизии.
class EventEmitter
eventListeners = Symbol()
constructor: ->
@[eventListeners] = []
getEventListeners: -> @[eventListeners]
eventEmitter = new EventEmitter()
console.log eventEmitter; #empty object
console.log eventEmitter.getEventListeners(); #array