@KoiLVeD

Как в переменную записать метод?

Всем привет!
Нужно чтобы в функции методы slideUp и fadeIn менялись в зависимости мобильное устройство или нет.
вот пример код с которого опирался.

var mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent);
var start = mobile ? "touchmove" : "mousemove";

а теперь как записать методы slideUp и fadeIn c аналогии выше?

$('.filter').removeClass('active').fadeIn();

в этот коде необходимо, чтобы вместо fadeIn стояла переменная (как start) и в зависимости мобильное устройство или нет, выбирался нужный метод(slideUp или fadeIn).

Подскажите пожалуйста, как реализовать. или есть другой выход из этой ситуации.
  • Вопрос задан
  • 219 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
В js между свойствами объекта и его методами нет никакой разницы. Собственно, метод - это свойство, содержащее функцию. А к свойствам, помимо доступа через точку (o.foo) можно получить доступ и через квадратные скобки (o['foo']). Польза этого в том, что в квадратные скобки можно передать переменную и таким образом реализовать доступ к свойству по имени, которое определяется в процессе выполнения.
Скомбинировав эти знания, получаем следующий код:
$('.filter').removeClass('active')[mobile ? 'slideUp' : 'fadeIn']();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
akzhan
@akzhan
Эффективно - так.

var mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent);

$.fn.slideOrFade = function() {
  return mobile ? this.slideUp() : this.fadeIn();
};

$('.filter').removeClass('active').slideOrFade();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы