我在使用$ .extend函数时遇到问题,请参阅下面的代码......
//Function to merge the opts with the defaultOpts
var foo = function(opts){
var opts = opts ? opts : {};
console.log('BEFORE: ');
console.log(JSON.stringify(opts));
var defaultOpts = {
className : 'defaultClass',
selectable : false,
ID : null,
buttons : []
}
$.extend(true, opts, defaultOpts);
console.log('AFTER: ');
console.log(JSON.stringify(opts));
}
//Run the function and pass in a few options
foo({
className : 'realClassName',
buttons : [
{
something : 'nothing'
},
{
something : 'nothing'
}
]
});
输出的问题是“className”属性正在被默认值替换,但由于某种原因,“buttons”属性按预期工作。
答案 0 :(得分:0)
尝试:
$.extend(true, opts, defaultOpts, opts);
或:
var nuOpts = {};
$.extend(true, nuOpts, defaultOpts, opts);
opts = nuOpts;