【问题标题】:linking two objects // updating value on first and second链接两个对象 // 更新第一个和第二个的值
【发布时间】:2010-10-11 20:28:37
【问题描述】:
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'

【问题讨论】:

  • 闻起来有点 CW(社区 Wiki)的味道。
  • 我认为是一个函数。我可能是错的。它可能需要参数。也不确定。
  • 这里的问题是什么?我们怎么看?这太宽泛了。

标签: javascript oop


【解决方案1】:

这行不通。完全没有。

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

尤其是这不会让你到任何地方。

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

【讨论】:

  • 它的工作,这不是问题,问题是,这是好的做法吗?
  • 事实上它在理论上(我们都知道与实践不同)不应该起作用 - 我要说不,它不是。
  • 好的,我改成'obj2[id] = newval;返回新瓦尔;'它现在应该在理论上有效吗?
  • 现在没有错误了。所以,是的,它有效,尽管令人困惑。但这只是因为它断章取义
猜你喜欢
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 2012-04-18
  • 2015-07-11
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多