Использование $.noop в методе уничтожения пользовательского интерфейса jQuery

Пользовательский интерфейс jQuery реализует метод уничтожения. Я не понимаю цель использования $.noop с this_.destroy() в начале метода:

destroy: function() {
    this._destroy();
    //other code here...
    {...}
},
_destroy: $.noop,

Может кто-нибудь объяснить это?

2 ответа

Решение

В jQuery 1.9 _destroy добавлен метод, чтобы виджетам не приходилось вызывать базу destroy метод. http://bugs.jqueryui.com/ticket/5056

Поскольку метод является необязательным, он по умолчанию определен как $.noop, который определяется как

$.noop = function(){};

$.noop это просто функция-заполнитель. В javelin.js (библиотека javascript в Facebook) он известен как "мешок с подержанным". Существует множество вариантов использования, и иногда имеет смысл просто передать функцию, которая ничего не делает, вместо того, чтобы ничего не передавать.

Подумайте о моих намерениях с этим примером.

$.ajax({
    url: 'something.asmx',
    success: $.noop,
    error: $.noop,
    complete: $.noop
});

Понятно, что единственной целью этого является отправка данных на сервер и игнорирование всех возможных сценариев. Сравните это со следующим, где намерение неоднозначно.

$.ajax({
    url: 'something.asmx'
});
// future developer thinks, "hey, should this require some callback?
Другие вопросы по тегам