2010-10-11 1 views
-1
function associate(obj1 ,obj2 , key){ 
    if(typeof key === 'object'){ 
     for (var i in key) 
      associate(obj1, obj2 , key[i]); 
    } else { 
     obj1.watch(key, function (id, oldval, newval) { 
       obj2[id] = newval; 
       return newval; 
     }); 
    } 

} 

Я написал эту функцию, потому что, если ей нужно различать obj, и оба должны быть обновлены. Что вы думаете об этой функции?связывание двух объектов // обновление значения для первого и второго

obj = { key1: 'value2', key2: 'value2'} 
    obj2 = {key1: 'value2', key2 : 'value2'} 

    associate(obj ,obj2 , 'key1') 

    obj.key1 = 'new value'; 

    console.log(obj.key1) 
    --> 'new value' 

    console.log(obj2.key1) 
    --> 'new value' 
+0

Запах немного CW (Community Wiki). – BrunoLM

+2

Я думаю, что это функция. Я могу ошибаться. Он может принимать параметры. Не уверен в этом. –

+0

В чем вопрос? Что мы думаем? Это слишком широко. –

ответ

0

Это не сработает. Вообще.

return obj1[id] = obj2[id] = newval; 

Это, в частности, не приведет вас никуда.

Не стесняйтесь использовать http://www.jslint.com/, если вы хотите найти проблемы в своем коде.

+0

его работа, это не проблема, вопрос в том, является ли это хорошей практикой? –

+0

Byt факт, что это, теоретически (мы все знаем, это не то же самое, что практика) не должно работать - я собираюсь сказать «нет», это не так. – Mantar

+0

ОК, я изменил на 'obj2 [id] = newval; return newval; должен ли он теперь работать даже в теории? –

Смежные вопросы