Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加了可访问但不可见的Javascript属性_Javascript_Backbone.js_Coffeescript_Underscore.js - Fatal编程技术网

添加了可访问但不可见的Javascript属性

添加了可访问但不可见的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]

因此,我试图将一个属性添加到一个包含对象名称的对象中。这将在html名称属性等内部使用

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