您可以使用以下方法将对象的一部分提取到单独的局部变量中:
{a, b} = dict
但没有办法分配给一个对象的切片,即你不能做这样的事情:
dict{a, b} = [ x, y ]
作为快捷方式
dict.a = x
dict.b = y
您甚至无法使用以下内容将对象切片提取到新对象中:
obj = dict{a, b}
您必须分两步完成:
{ a, b } = dict
obj = { a, b }
解构分配可以很好地将事物从对象中提取出来,但它们对于将事物放回对象中并没有那么有用。我认为你能得到的最接近的是使用解构数组赋值:
[ dict.a, dict.b ] = [ a, b ]
如果您正在使用多个键,那么您可以将键放在一个数组中并使用循环进行切片和合并(可能包含在辅助函数中):
slice = (obj, keys...) ->
s = { }
s[k] = obj[k] for k in keys
s
merge = (dest, src) ->
dest[k] = src[k] for k of src
return
keys = [ 'a', 'b' ]
dict = { a: 1, b: 2, c: 3 }
s = slice(dict, keys...)
s.a += 6
s.b += 6
merge(dict, s)
# dict is now { a: 7, b: 8, c: 3 }
或者只是使用 Underscore、jQuery、... 实用程序函数。