Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: для новичков > вызов строчного литерала как метода. jQuery |
Автор: pasha4ur 13.10.2014, 19:46 | ||
Всем привет Не пойму, почему работает у автора эта строка: function () { $this[config.effect](config.speed);} config.effect - это строка и туда придет строчный литерал.
|
Автор: ksnk 14.10.2014, 11:28 |
А что удивляет? Все сущности в JS - объекты. К объектам есть литеральный доступ, через точку и "массивный", через "вырезку". Так оно устроено. |
Автор: pasha4ur 14.10.2014, 16:57 | ||
Это я знаю. проблема в том, что в $this[config.effect] лежит строка 'slideToggle'. Как ее можно вызывать? Это все равно, что написать
моя не понимать этого ![]() |
Автор: ksnk 17.10.2014, 09:33 |
pasha4ur, в JS у всех полей объектов есть имена. Фактически - ассоциативный массив. И да, JS - это интерпретатор он весь состоит из одного большого евала ![]() |
Автор: sQu1rr 17.10.2014, 13:15 | ||
Нет, это всеравно что написать
Потому что как я понимаю не а в config.effect лежит строка 'slideToggle' |
Автор: pasha4ur 19.10.2014, 00:07 |
ksnk про объекты я знаю. Но все равно не пойму, как он так строку использует, как функцию. там он лежит. все равно, что написать $this.config.effect. |
Автор: _zorn_ 20.10.2014, 02:28 | ||
Нет
$this[config.effect](config.speed); === $this['slideToggle'](config.speed); === $this.slideToggle(config.speed); |
Автор: pasha4ur 20.10.2014, 19:35 |
А почему нельзя сделать так? $this.config.effect(config.speed) "$this['slideToggle'](config.speed);" В объекте contactForm нет же свойства с названием 'slideToggle' |
Автор: _zorn_ 21.10.2014, 07:04 | ||||||
$this.config.effect - не метод (функция), а просто строка. Ее нельзя вызвать. Если только таким извратом
но зачем ?
Теперь $this - это jQuery обертка contactForm у которой есть метод slideToggle. |
Автор: pasha4ur 20.1.2015, 20:46 |
Получается, что по этому текстовому ключу ['slideToggle'] мы вызываем метод в объекте обертке $(this). Забыл про строку var $this = $(this) |
Автор: sQu1rr 21.1.2015, 20:04 | ||
Вприниципе да. По этому текстовому ключу мы получаем доступ к методу который и вызываем. Метод есть под этим ключем потому что обертка $(this). Все верно, да 2 месяца - это довольно долго что бы это понять ![]() |
Автор: pasha4ur 22.1.2015, 23:58 |
Я просто случайно вспомнил, решил зайти и разобраться. Нужно было мне внимательнее код читать. Спасибо всем за терпение. Я это время не занимался js (он мне и не особо понравился из-за своей кривости + книга нудная была (подробное руководство)). Прочитал книгу по WP, немного поэкспериментировал с убунту(вернулся в виндовс). Сейчас вот начал читать книгу по PHP, от которого меня все стратсно отговаривают в сторону руби, питона и джавы (только вакансий джунов по ним вообще в моей области нет). |