Показать сообщение отдельно
  #12 (permalink)  
Старый 31.01.2016, 07:51
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
пожалуйста
Окей.

Во-первых, ты не прав в том, что тебе ответил создатель кофескрипта. Создатель - 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

Последний раз редактировалось Erolast, 31.01.2016 в 08:00.
Ответить с цитированием