Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.06.2020, 08:54
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

Это нормальный стиль кода или нет?
Приветствую.
Вот в доках пишут:
Цитата:
Обработчики действий получают объект контекста, содержащий те же методы и свойства, что и сам экземпляр хранилища, так что вы можете вызвать context.commit
const store = new Vuex.Store({
  state: {
    count: 0
  },
  actions: {
    increment(context) {               // Вот 
      context.commit('increment'); // про этот код
    }
  }
});


Теперь смотрю как этот код переделали в одном примере

actions: {
    addToFavs({commit}, movie) { 
      commit("ADD_AS_FAVORITE", movie)
    },


Я так понял что это он воспользовался деструктуризацией объекта, и вытянул с того объекта context его метод commit. И оно работает.
Зачем - не знаю, может для экономии пары символов.
Или так поступать - обычный прием?
Если так, то js код очень часто напоминает какой то шифр, который сначала требуется разгадывать, не против этого ли написаны такие книги как "Чистый код" Роберта Мартина?
Ответить с цитированием
  #2 (permalink)  
Старый 11.06.2020, 10:20
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 641

опытный глаз сразу разгадает загадку... про чистый код тоже можно долго спорить ) вот, например, посмотрим код битрикса, не знаю, может быть там что-то уже поменялось, не видел его лет 5, и видел я его два раза )... тем не менее даже такой код приносит много прибыли, в то время когда кто-то пытается писать чистый код и сидит на воде с хлебом... при чем тут это? ))
Ответить с цитированием
  #3 (permalink)  
Старый 11.06.2020, 14:04
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

Оно еще и this при этом теряет? Вообще жестяк.
А почему тут есть какой то this?
function User(name) {
  this.name = name;
  this.isAdmin = false;
  this.hello = function(){
    alert(typeof(this));
    alert(this.name);
  }
}

function checkThis({hello}) {
  hello();
}

let user = new User("Вася");
/*
1)
Выведет:
object
Вася
*/
//user.hello();

/*
2)
Выведет:
object
result
*/
checkThis(user);


Вот demo в работе

Последний раз редактировалось micscr, 11.06.2020 в 14:08.
Ответить с цитированием
  #4 (permalink)  
Старый 11.06.2020, 15:16
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 641

чтобы this работал, нужно вызвать метод из объекта ), а не напрямую... или использовать .bind, .apply
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка файла. Узнать существует он или нет. Node js vlzkonopatov AJAX и COMET 8 28.11.2014 19:28
проверка на ajax зарегестрирован email или нет Sergei-b84 AJAX и COMET 5 30.08.2014 14:21
отследить событие произошло оно или нет в другой функции jei Общие вопросы Javascript 14 07.04.2013 12:57
определить число целое или нет dadli Общие вопросы Javascript 29 14.06.2012 22:59
Сторонние библиотеки - быть или не быть? IIIEPJIOK Оффтопик 64 21.03.2009 19:39