2017-03-03 134 views
0

访问解构赋值给定的输入值:无法从复杂对象

input = 
    name:'Foo' 
    id:'d4cbd9ed-fabc-11e6-83e6-307bd8cc75e3' 
    ref:5 
    addtData:'d4cbd9ed-fabc-11e6-83e6-307bd8cc75e3' 
    data:'bar' 

当我试图通过这样的功能来解构输入:

simplify: (input)-> 
    { name, ref, id } = input 

...返回值仍然是全部输入或输入的副本。

我在这里错过了一些简单的东西吗?我如何访问解构值。如果您无法通过回报来访问该值,那么看起来解构在本地范围值之外没有什么价值。

回答

0

虽然这不一定是一个优势,但我能够解密并得到正确答案的唯一方法是使用@(又名this)将分解值分配给本地范围。

input = 
    name:'foo' 
    data:'bar' 
    id: 12314 
    key:'children' 
    ref:1 

f = (input)-> 
    { @name, @id } = input 

r = {} 
f.call(r, input) 
console.log r # Object {name: "foo", id: 12314} 

工作示例 - link

如果有人有更好的方式来处理这个问题,请添加一个答案,所以我可以选择它,因为这似乎不是最好的办法。