You don't know js(up & going)


this и прототипы объектов


Download 424.95 Kb.
Pdf ko'rish
bet49/53
Sana08.11.2023
Hajmi424.95 Kb.
#1757840
1   ...   45   46   47   48   49   50   51   52   53
Bog'liq
You don\'t know JS(up & going)

this и прототипы объектов
Пожалуй, одним из самых распространенных и устойчивых ложных фактов о
JavaScript является то, что ключевое слово `this` указывает на функцию, в
которой оно появляется. Ужасное заблуждение!
Ключевое слово `this` динамически привязывается, основываясь на том, как
выполняется функция; выясняется, что есть четыре простых правила,
помогающих понять и полностью определить привязку `this`.
Тесно связан с ключевым словом `this` механизм прототипов объектов, который
является цепочкой поисков свойств, похожей на то, как обнаруживаются
переменные в лексической области действия. Но обертка прототипов хранит
другой большой промах с JS идея эмуляции (замены) классов и так называемое
наследование через прототипы.
К сожалению, желание привнести мышление классами и наследованием в
JavaScript — это просто наихудшая вещь, которую вы могли бы сделать; несмотря
на то, что синтаксис может вводить вас в заблуждение, будто есть что-то
подобное классам, в действительности механизм прототипов фундаментально
противоположен по своему поведению.
Что является предметом спора, так это то, лучше ли проигнорировать
несоответствие и притвориться, что вы реализуете "наследование", либо
все-таки, что является более подходящим, изучить и принять то, как на самом
деле работает система прототипов объектов. Последнее подходяще именуется
"делегированием поведения".
Это больше, чем синтаксическое предпочтение. Делегирование — это
совершенно другой и более мощный шаблон проектирования, который сам по
себе заменяет необходимость проектировать классы и их наследование. Но эти
утверждения полностью противоречат почти каждому второму посту в блогах,
книгам и конференциям по этой теме на всем протяжении существования
JavaScript.


Претензии, которые я предъявляю касаемо делегирования в противовес
наследованию, идут не от нелюбви к языку и его синтаксису, а от желания видеть
правильное применение истинной возможности языка и свести на нет
бесконечные путаницу и недовольство.
Но объяснение необходимости рассматриваемых прототипов и делегирования
гораздо более запутанно, чем то, которое я тут представил. Если вы готовы
переосмыслить всё, что, как вы думаете, вы знаете о "классах" и "наследовании"
в JavaScript, то я даю вам шанс "принять красную таблетку" (*Матрица*, 1999 и
проверить главы 4 6 книги *this & прототипы объектов* этой серии.

Download 424.95 Kb.

Do'stlaringiz bilan baham:
1   ...   45   46   47   48   49   50   51   52   53




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling