![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Сisa |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 18.1.2013 Репутация: нет Всего: нет |
Тут habrahabr.ru/post/199456/ связывается функция с контекстом: var bound = returnFoo.bind(context);
Два моих варианта кода:
оба выполняются, непонятна роль this в первом, и возможность отсутствия this/объекта/контекста во втором варианте. Чем отличаются эти две записи? |
||||
|
|||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 11 Всего: 142 |
Попробуй так
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Сisa |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 18.1.2013 Репутация: нет Всего: нет |
diadiavova спасибо! я почти понял :
однако этот this все равно какой то "тугой" для нормального восприятия
|
||||
|
|||||
| diadiavova |
|
||||||||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 11 Всего: 142 |
window. Все переменные и функции, объявленные на глобальном уровне становятся полями объекта window и в данном случае this тоже будет ссылаться на него.
Ну то есть, что передашь функции колл, на то и будет ссылаться this внутри вызываемой функции.
Код не запускал, но рискну предположить, что алерт выдаст 2. Локальная переменная икс за пределами функции не видна, поэтому попытки достучаться до нее оттуда ни к чему не приведут. Когда ты выполняешь функцию, то выполняется this.x = 2, а поскольку контекст ты не задал, то this будет ссылаться на window, стало быть в этом контексте следующие строки будут эквивалентны
А последняя, в свою очередь, по причине, которую я объяснил выше будет равнозначна такому объявлению на глобальном уровне
Собственно, исходя из этих рассуждений, я и думаю, что твой алерт должен выдать двойку. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||||||||
|
|||||||||||
| Сisa |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 18.1.2013 Репутация: нет Всего: нет |
diadiavova я Вам благодарен за разъяснение! Понимаю что Вы мне говорите, т.к. не раз уже перечитывал об этом самом this, и что такое локальная и глобальная переменная, и что они отличаются областью видимости, и временем жизни, и что есть замыкание, и есть инкапсуляция, но в данной записи, когда аргументы в функцию не передаются, моск попросту сопротивляется и автоматом напрочь отказывается понимать
Спасибо! (конечно 2 и конечно window) __________________ " что передашь функции колл, на то и будет ссылаться this внутри вызываемой функции. " - это надо в учебниках написать, и все сразу будет понятно !!!!!!!!!! Это сообщение отредактировал(а) Сisa - 3.2.2015, 22:34 |
|||
|
||||
| _zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1076 Регистрация: 21.8.2007 Репутация: 1 Всего: 12 |
Я бы не стал использовать такой код в своих приложениях.
И бил бы по пальцам тех кто пытается запутать других, показав себя умным.... Яваскрипт не без изъянов, но давайте выставим их все напоказ что ли ? Неужели нельзя использовать всем понятные конструкции ? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 11 Всего: 142 |
Какой именно?
В теме рассматривались простейшие аспекты использования стандартной функции языка. Ты действительно полагаешь, что всякий, кто ее использует, делает это исключительно с целью показать себя слишком умным запутать тебя? Это тебя настолько раздражает, что тебе хочется наносить таким людям увечья? Хочешь поговорить об этом? О каких изъянах речь в данном случае? Предлагаешь скрывать правду? Конструкций, понятных всем, не существует. Понятно тебе будет только то, в чем ты дал себе труд разобраться. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |