gpt4 book ai didi

javascript - _.extend 不能正确地将元素浅复制到目标

转载 作者:行者123 更新时间:2023-12-01 03:49:22 24 4
gpt4 key购买 nike

我刚刚开始编写一个像这样的 Backbone 库,

(function() {
var root = this;

if(root && !root.Backbone) {
console.log('BackboneJS does not exist!.');
} else {
Backbone = root.Backbone;
}

var Form = Backbone.View.extend({
events: {
'submit': function(event) {
this.trigger('submit', event);
}
},
initialize: function(options) {
var self = this;
var options = this.options = _.extend(options, {
submitButton: false
});
}
});
Backbone.Form = Form;
})();

我通过 jQuery(在我的 index.html 中)调用它,如下所示,

$(document).ready(function(){
var myForm = new Backbone.Form({
options: {
hasTopButtons : true,
hasEdit: false,
hasPrint: true
}
});

但是,当我使用 _.extend 函数将附加键浅复制到 options 时,在我看来,似乎没有将新键包含到现有的 options 数组,而是在 options 数组之外创建一个新数组,如下所示,

What is currently happening

而不是下面的结构。

How I expect that to come

有人可以帮我找出这里出了什么问题吗?

最佳答案

您错误地调用了该函数。你想要:

$(document).ready(function(){
var myForm = new Backbone.Form({
hasTopButtons : true,
hasEdit: false,
hasPrint: true
});
});

您的代码显式传递一个具有名为“选项”的单个属性的对象。

此外,在您的“initialize”函数中,有一个虚假的 var 声明:

        var options = this.options = _.extend(options, {
submitButton: false
});

应该可能

        this.options = _.extend({}, options, {
submitButton: false
});

_.extend 函数修改第一个对象,您可能不想像这样弄乱客户端对象。因此,您可以传入一个新的空对象,_.extend() 会将所有客户端属性浅复制到其中。

关于javascript - _.extend 不能正确地将元素浅复制到目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43347853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com