Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 链接两个对象//更新第一个和第二个对象上的值_Javascript_Oop - Fatal编程技术网

Javascript 链接两个对象//更新第一个和第二个对象上的值

Javascript 链接两个对象//更新第一个和第二个对象上的值,javascript,oop,Javascript,Oop,我编写这个函数是因为if必须使用不同的obj,并且两者都需要更新。 你觉得这个函数怎么样 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,

我编写这个函数是因为if必须使用不同的obj,并且两者都需要更新。 你觉得这个函数怎么样

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 = { 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'
特别是这不会让你有任何进展


如果您想在代码中发现问题,请随意使用。

有点CW(社区维基)的味道。我认为这是一种功能。我可能错了。它可能需要参数。对此也不确定。这里的问题是什么?我们怎么想?这太宽泛了。它起作用了,这不是问题,问题是,这是一个好的实践吗?事实上,它在理论上(我们都知道这和实践不一样)不应该起作用——我要说不,它不是。好吧,我改成了‘obj2[id]=newval;返回newval;'即使在理论上,它现在还能工作吗?现在没有错误了。因此,是的,它是有效的,尽管令人困惑。但那只是因为它断章取义
return obj1[id] = obj2[id] = newval;