添加了可访问但不可见的Javascript属性
因此,我试图将一个属性添加到一个包含对象名称的对象中。这将在html名称属性等内部使用添加了可访问但不可见的Javascript属性,javascript,backbone.js,coffeescript,underscore.js,Javascript,Backbone.js,Coffeescript,Underscore.js,因此,我试图将一个属性添加到一个包含对象名称的对象中。这将在html名称属性等内部使用 setClientSideOpeningHours: => newOpeningHours = {} existingOpeningHours = _.extend {}, @.get("opening_hours") _.each _.keys(existingOpeningHours), (item) -> newOpeningHours[item]
setClientSideOpeningHours: =>
newOpeningHours = {}
existingOpeningHours = _.extend {}, @.get("opening_hours")
_.each _.keys(existingOpeningHours), (item) ->
newOpeningHours[item] = existingOpeningHours[item]
newOpeningHours[item]["day"] = item
console.log "openingHours.friday", newOpeningHours.friday,
"openingHours.friday.day", newOpeningHours.friday.day
@.set "clientside_opening_hours", newOpeningHours
在Chrome中,这会打印到控制台:
开放时间,星期五
openingHours.friday:Object{is_closed:“true”,proto:Object}
开放时间:星期五
稍后,在模型之外,当我调用@.model.toJSON()或@.model.attributes时,day属性完全不存在。这是怎么回事
编辑:使其与$.extend一起工作(true,…)
.extend
不会进行深度复制,=
。您可能正在共享您不希望共享的引用。你能在或上制作一个功能演示吗?看起来我把$.extend和u.extend弄糊涂了。$.extend
只有在你要求的情况下才进行深度复制。
setClientSideOpeningHours: =>
newOpeningHours = {}
existingOpeningHours = $.extend true, {}, @.get("opening_hours")
_.each .keys(existingOpeningHourshours), (item) =>
newOpeningHours[item] = $.extend true, {}, existingOpeningHours[item]
newOpeningHours[item].day = item
@.set "clientside_opening_hours", newOpeningHours