【发布时间】:2016-03-25 15:48:04
【问题描述】:
我有一个名为 bookings 的对象,其中有几个属性,我想用 Object.assign 进行扩展,如下所示:
let data = Object.assign(booking, {
hiw: event.hiw[booking.locale],
tip: event.tip[booking.locale],
start: moment(event.start).format('L')
});
但是当我打印数据时,结果将是来自源(预订)的相同对象,因此hiw、tip 和start 将被忽略,但是......如果我尝试这样做:
let data = Object.assign({}, {
hiw: event.hiw[booking.locale],
tip: event.tip[booking.locale],
start: moment(event.start).format('L')
});
这会很完美。
我的问题是:我在这里做错了什么?为什么我不能扩展booking 而我可以扩展空对象?
这绝对不是异步代码的问题,当我尝试延长预订时,他已经存在,里面的所有属性。
我也尝试使用下划线extend 方法,行为完全一样。
【问题讨论】:
-
您能否在调用assign之前和之后打印预订时显示您拥有的内容?
-
这似乎在 Chrome 中工作,它(理论上)使用与 node.js 相同的引擎。
hiw、tip或start是否不可枚举或拥有booking的属性? jsfiddle.net/mikemccaughan/2959resk -
我想知道错误是在
let块分配中还是在您尝试分配的属性中。我整理了一个很轻的mock-up,它可以工作。 -
听起来问题出在您在此代码之前分配
booking的方式上。 -
如果您能提供更多上下文,那就太好了。
标签: javascript node.js mongoose ecmascript-6