$ .extend(deep,target,obj)的正确用法是什么?我的代码不起作用

时间:2012-08-26 09:21:19

标签: jquery

我在使用$ .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”属性按预期工作。

1 个答案:

答案 0 :(得分:0)

尝试:

$.extend(true, opts, defaultOpts, opts);

或:

var nuOpts = {};
$.extend(true, nuOpts, defaultOpts, opts);
opts = nuOpts;