JavaScript-эквивалентом для заявленного способа продлить в jQuery | VPROS.ru

JavaScript-эквивалентом для заявленного способа продлить в jQuery

Возможные Дубликаты:
Как я могу объединить свойства двух динамически JavaScript-объектов?

Фон

У меня есть функция, которая принимает config объект в качестве аргумента. Внутри функции, я также default объект. Каждый из этих объектов содержит свойства, которые по существу работают как настройки для остальной код внутри функции. Для того, чтобы предотвратить того, чтобы указать все параметры внутри config объект, я использую jQuery с extend способ заполнить новый объект, settings с любыми значениями по умолчанию из default объекта, если они не были определены в config объект:

var config = {key1: value1}; var default = {key1: default1, key2: default2, key 3: default 3};  var settings = $.extend(default, config);  //resulting properties of settings: settings = {key1: value1, key2: default2, key 3: default 3}; 

Проблема

Это прекрасно работает, но я бы хотел, чтобы воспроизвести эту функциональность без необходимости для jQuery. Есть не менее элегантный (или близко к) означает, что для этого с равнина ол’ в JavaScript?


Правка: Не Дублировать Обоснование

Этот вопрос не дубликат “как я могу объединить свойства двух JavaScript-объекты динамически?” вопрос. Принимая во внимание, что вопрос просто хочет создать объект, который содержит все ключи и значения из двух отдельных объектов – я специально хочу обратиться, как это сделать в случае, если оба объекта разделяют некоторые, но не все ключи и какой объект получит приоритет (по умолчанию) на полученный объект в том случае, если имеются дубликаты ключей. И даже более конкретно, я хотел бы обратиться к использованию способ в jQuery, чтобы добиться этого и найти альтернативный способ, чтобы сделать это без jQuery. Хотя многие ответы на оба вопроса дублируют друг друга, что не означает, что сами вопросы те же.

One Reply to “JavaScript-эквивалентом для заявленного способа продлить в jQuery”

  1. Можно перебрать свойства объекта, используя “по инструкции”.

    var settings = extend(default, config);  function extend(a, b){     var c = {};     for(var p in a)    c[p] = (b[p] == null) ? a[p] : b[p];     return c; } 

Comments are closed.