2014-09-17 4 views
0
w = {c: true} 
w = 
    a: 4 
    b: true 
console.log w 

Я ожидаю результат w быть {а: 4, б: правда, с: истинно}, но я получаю {а: 4, б: истинно}. Как я могу выполнить несколько присвоений объектам без потери уже установленных свойств?CoffeeScript: присвоение нескольких свойств к объекту инициированную

+1

Ответы на [этот вопрос] (http://stackoverflow.com/q/929776/306084) могут оказаться полезными, поскольку то, что вы делаете, это слияние свойств с исходным объектом. – pjmorse

ответ

0

Не думаю, что это можно сделать напрямую. Я считаю, что вам нужно перебирать:

w = {c: true} 
temp = 
    a: 4 
    b: true 
w[k] = v for k,v of temp 
console.log w 
+0

хм ... это делает привязку каждого свойства дважды – ronnydw

+0

Правда, но решение от @Yuri делает то же самое - посмотрите на преобразованный код. –

+0

Самый эффективный способ, похоже, от @Tomasz Zieliński - не очень красиво. –

0
w = {c: true} 
w[i] = v for i,v of { 
    a: 4 
    b: true 
} 
console.log w 
1

CoffeeScript: assigning multiple properties to an initialised object был лучший ответ до сих пор.

Но если вы хотите только добавить несколько свойств объекта, вы можете просто сделать:

w = {c: true} 
w.a = 4 
w['b'] = true # alternative notation 

Кроме того, этот вопрос больше о JavaScript, чем CoffeeScript.

+0

Это обман, я знаю ... но не очень красиво, я ищу короткую нотацию, в реальной жизни w - объект с длинным именем, и у меня есть много свойств, которые нужно добавить. – ronnydw

Смежные вопросы