Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Config и конструктор объекта (https://javascript.ru/forum/extjs/58252-config-i-konstruktor-obekta.html)

AirGraph 12.09.2015 00:46

Config и конструктор объекта
 
Привет всем!

У меня есть конфиг по умолчанию, содержащий ВСЕ параметры и есть конфиг, передаваемый в конструктор, где указаны некоторые параметры. Вопрос - как проще всего совместить эти 2 конфига, чтобы заменить значения только тех свойств в конфиге по умолчанию, которые есть в переданном конструктору конфиге? Где-то видел в библиотеке как профессионалы это изящно делают, но найти не могу... :-)

Lemme 12.09.2015 00:54

var foo = {
	foo: 'foo',
    bar: 'bar'
};

var bar = {
	foo: 'new foo',
    baz: 'baz'
};

var baz = Object.assign(foo, bar);

// это только для демонстрации через alert
alert(JSON.stringify(baz));


https://developer.mozilla.org/en-US/.../Object/assign

novikov 12.09.2015 10:40

Ext.apply

AirGraph 12.09.2015 15:58

Lemme,
Спасибо! То, что надо.
Жаль не поддерживается во всяких сафари и т.п., а мне оно надо...

novikov,
Спасибо! Именно оно, то что где-то видел.

А еще у настоящих парней обычно написана для начала строка типа:

config = config || {};

Это на тот случай, что если конфига нет в формальных параметрах, то он станет объектом и далее его можно мерджить с конфигом по умолчанию, а если есть, то останется таким как был? Я правильно понимаю?

Lemme 12.09.2015 16:02

Цитата:

Это на тот случай, что если конфига нет в формальных параметрах, то он станет объектом и далее его можно мерджить с конфигом по умолчанию, а если есть, то останется таким как был? Я правильно понимаю?
Да.

alert(JSON.stringify(undefined || {}));
alert(JSON.stringify({foo: 'foo'} || {}));

AirGraph 12.09.2015 16:12

Lemme,
Класс! Все ясно, спасибо! ;-)


Часовой пояс GMT +3, время: 03:42.