2010-10-11 110 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(社区维基)。 – BrunoLM 2010-10-11 20:31:03

+2

我认为这是一个功能。我可能是错的。它可能需要参数。不确定。 – 2010-10-11 20:31:24

+0

这里有什么问题?我们怎么看?这太宽泛了。 – 2011-03-13 00:41:42

回答

0

它不起作用。完全一样。

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

这特别是不会让你到任何地方。

如果您想在代码中查找问题,请随时使用http://www.jslint.com/

+0

它的工作,那不是问题,问题是,这是好的做法吗? – 2010-10-11 20:52:05

+0

Byt事实上,它在理论上(我们都知道这与实践不一样)不应该工作 - 我要说不,事实并非如此。 – Mantar 2010-10-11 20:56:29

+0

好吧,我改为'obj2 [id] = newval;返回newval;'它现在是否应该在理论上工作? – 2010-10-11 20:58:16

相关问题