Я видел это в плагине:
var options = $.extend(defaults, options);
Как это работает?
Что extend()
делать?
jquery
jquery-plugins
Тодд Терри
источник
источник
Ответы:
Несколько параметров
В документации нет точного объяснения того, как работает extension, поэтому я провел небольшой тест:
(
console.log
Функция предназначена для работы в Firebug; замените ее на alert () или другую функцию вывода, если хотите).Результат:
Из этого мы видим, что jQuery.extend ():
Это полезно для объединения пользовательских и стандартных опционных объектов вместе, чтобы получить полный набор опций:
Обратите внимание, что «null» - допустимое значение для перезаписи, а «undefined» - нет. Возможно, вы сможете это использовать.
Результаты в:
Один параметр
Если передать только один объект
jQuery.extend()
, то JQuery предполагает , чтоjQuery
объект сам по себе является «первым» параметр (то есть: один должен быть изменен), а ваш объект является «второй» (то есть: один , чтобы добавить к первому) , Так:Результаты в:
источник
{zed: 'dark'}
а не,2
а вы его установилиr.baz.zed = 'light'
, каково было бы значениеb.baz.zed
? т.е. свойства копируются или объединяются по ссылке?b.baz.zed
было быlight
- т.е. значения объединяются по ссылке. увидеть скрипкуОн объединяет содержимое одного объекта с другим . Если мы передаем два объекта, свойства второго объекта добавляются к первому объекту / первому параметру
Теперь объект1 содержит свойства объекта2
Если мы хотим объединить два объекта , нам нужно передать пустой объект в первом параметре.
Теперь newObject содержит свойства object1 и object2 .
источник
Из документации jQuery
В контексте плагина: если пользователь не устанавливает необязательные параметры для функции, вместо этого будет использоваться значение по умолчанию.
источник
Как extend () работает в jQuery? [Решено]
jQuery имеет глубокую копию и легкую копию. Первое логическое значение решает это, истинное для глубокого и ложное для света.
Например:
jQuery.extend (ложь, {'а': {'a1': 1}}, {'a': {'a2': 2}})
результат будет: {'a': {'a2': 2}}, потому что это облегченная копия, просто сравните уровень 1.
jQuery.extend (правда, {'a': {'a1': 1}}, {'a': {'a2': 2}})
результат будет: {'a': {'a1': 1, 'a2': 2}} Это глубокая копия со многими уровнями объекта (как и уровень массива)
jQuery.extend (a, b, c) с a, b, c - это объект или массив. Перезапись потока будет b-> a, c -> a (b перезаписать a, c переопределить a ...), эта функция вернет a, а также изменит значение.
Расширенные примеры:
jQuery.extend ({'number_param': 1})
Если вы просто передадите один параметр. jQuery расширится. console.log (jQuery ['number_param']) выведет 1.
jQuery.extend (1, {'number_param': '2'}); Этот пример не является добавлением самого jQuery. Первый параметр должен быть логическим. В этом случае он вернет {'number_param': '2'}, и jQuery не будет обновлен.
jQuery.extend (a, b, c, d, e, f); Порядок слияния будет. b -> a, c -> a, d -> a, e -> a, f -> a (b отменяет a, c отменяет a ...). И результат возврата будет.
с a = {'p': 1}. jQuery.extend (a, {'p': 2}, {'p': 3}, {'p': 4}, {'p': 5}) вернет a, а a = {'p': 6}. Число параметров, передаваемых этой функции, не ограничено.
источник
Цель - расширить существующий объект. Например, если у нас есть объект-шаблон, и мы хотим расширить его, добавив дополнительные свойства или переопределив существующие свойства, может быть полезно jquery extension.
};
теперь, если мы хотим расширить его,
$.extend(true, {"color":"red"}, carObjectTemplate, {"model": 'amaze'});
он даст нам вывод, расширив carObjectTemplate и добавивпервый логический параметр true / false указывает, нужна ли нам глубокая или мелкая копия
источник
Он делает именно это
Подробнее на jQuery.extend ()
источник