Показать сообщение отдельно
  #25 (permalink)  
Старый 07.09.2016, 01:47
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

warren buffet,
лексическое(ранее) связывание это эквивалент замыканий или выражений с bind. Функция таскает с собой под ковром окружение, и при любом вызове связывается только с ним. При позднем связывании функция резольвит переменные только в момент вызова, независимо от лексического окружения.
o = {a: 1}
o.early = function(){return this.a}.bind(o)
o.late = function(){return this.a}

o1 = {a: 100, early: o.early, late: o.late}

alert([o1.early(), o1.late()])


Сами по себе понятия эти самоочевидны: функция связывается в момент определения(создания) или в момент вызова.
Фактически, термин "позднее связывание" эквивалентен понятию "динамическое связывание". Есть языки, где позднее связывание дефолтно(не требует ключевого слова this, self, etc). Языки в которых оно отсутствует вообще(например, питон, жаба), не являются ООП-языками в том смысле, в котором трактовал ООП Алан Кей. На позднем связывания построены принципы наследования делегированием, в тч и в JS

Последний раз редактировалось scrollquest, 07.09.2016 в 01:56.
Ответить с цитированием