_.extend 没有正确地将元素浅层复制到目的地
_.extend doesn't shallow copy elements to destination properly
我刚开始编写一个 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
数组之外创建一个新数组,
而不是下面的结构。
谁能帮我找出问题所在?
您调用的函数不正确。你想要:
$(document).ready(function(){
var myForm = new Backbone.Form({
hasTopButtons : true,
hasEdit: false,
hasPrint: true
});
});
您的代码显式传递了一个对象,该对象具有一个名为 "options" 的 属性。
此外,在您的 "initialize" 函数中,有一个虚假的 var
声明:
var options = this.options = _.extend(options, {
submitButton: false
});
应该可能是
this.options = _.extend({}, options, {
submitButton: false
});
_.extend
函数修改第一个对象,您可能不希望像那样弄乱客户端对象。因此,您可以传入一个新的空对象,_.extend()
会将所有客户端属性浅复制到其中。
我刚开始编写一个 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
数组之外创建一个新数组,
而不是下面的结构。
谁能帮我找出问题所在?
您调用的函数不正确。你想要:
$(document).ready(function(){
var myForm = new Backbone.Form({
hasTopButtons : true,
hasEdit: false,
hasPrint: true
});
});
您的代码显式传递了一个对象,该对象具有一个名为 "options" 的 属性。
此外,在您的 "initialize" 函数中,有一个虚假的 var
声明:
var options = this.options = _.extend(options, {
submitButton: false
});
应该可能是
this.options = _.extend({}, options, {
submitButton: false
});
_.extend
函数修改第一个对象,您可能不希望像那样弄乱客户端对象。因此,您可以传入一个新的空对象,_.extend()
会将所有客户端属性浅复制到其中。