這裏有一種方法(從這裏開始:http://js2coffee.org/):
i = 0
len = keys.length
while i < len
k = keys[i]
mailOptions[k] = app.set("mailOptions")[k] unless mailOptions.hasOwnProperty(k)
i++
但我不會做這種方式。我只想做:
for k in keys
mailOptions[k] = app.set("mailOptions")[k] unless mailOptions.hasOwnProperty k
此輸出(不含var
,它也輸出)以下:
for (_i = 0, _len = keys.length; _i < _len; _i++) {
k = keys[_i];
if (!mailOptions.hasOwnProperty(k)) {
mailOptions[k] = app.set("mailOptions")[k];
}
}
或者,如果你想成爲票友,我不要在此提醒情況,因爲它犧牲了一些可讀性:
(mailOptions[k] = app.set("mailOptions")[k] unless mailOptions.hasOwnProperty k) for k in keys
要小心,以這種方式使用'hasOwnProperty';如果碰巧有一個名爲「hasOwnProperty」的郵件選項,它會失敗。爲了正確處理這種情況,在CoffeeScript中使用'Object.prototype.hasOwnProperty.call(mailOptions,k)'(或'Object :: hasOwnProperty.call mailOptions,k')。 – davidchambers 2013-02-10 07:33:28