Создание пустого объекта jQuery: $({}) или $()

Я видел следующие две инициализации переменных для создания пустого объекта jQuery. Есть ли существенная разница или преимущество в использовании одного над другим?

var a = $({});
var b = $();

Ответ 1

Если вы имели в виду $([]), то что-то из старых дней, когда вызов $() был фактически эквивалентен $(document) (это была недокументированная функция). Поэтому, чтобы получить пустой набор, вы должны вызвать $([]). Это было изменено в jQuery 1.4; документированная функциональность $() теперь возвращает пустой набор.

Передача объектов в конструктор jQuery - совершенно другой зверь. $({}) не создает пустой объект jQuery. Он создает объект jQuery длиной 1; выбранный элемент - это сам объект.

Передача объектов JS в конструктор jQuery позволяет использовать более эзотерическую функцию jQuery: привязка и запуск событий на объектах (не-DOM).

Например:

var obj = { some: 'stuff' };

$(obj).on('someevent', function() { ... });

$(obj).trigger('someevent');

В любом случае, если ваша цель - создать новый пустой объект jQuery, используйте $().

Ответ 2

Думаю, вы имеете в виду:

var a = $([]); //<- array not object
var b = $();

Не знаю, что я знаю, первая - это старая версия, так как 1.4 вы можете использовать позже.