jquery.extend и значения undefined.

Заметил интересное задокументированное поведение функции jQuery.extend при попытке переписать значения на undefined.

Согласно документации:
When two or more object arguments are supplied to $.extend(), properties from all of the objects are added to the target object. Arguments that are null or undefined are ignored.

Т.е. при попытке сделать что-то подобное:

var obj = $.extend({'test' : 'something'}, {'test' : undefined});

Мы получим не {‘test’ : undefined}, а {‘test’ : ‘something’}!
Не совсем удобное поведение в некоторых случаях.

Та же документация говорит нам, что для «нужд выходящих за рамки этого поведения» мы можем написать свою функцию расширения, либо использовать библиотеки наподобие lodash.

Lodash’евская версия extend работает ровно так, как и ожидается:

_.extend({'test' : 'test'}, {'test' : undefined}) // -> {'test' : undefined }

Комментарии

comments powered by Disqus
Яндекс.Метрика