如何使用多个对象的jquery extend()工作?

时间:2012-02-22 22:01:59

标签: javascript jquery object merge extend

我正在尝试修改插件,并试图了解extend()是如何工作的...

如果我有这个:

$.extend( plugin.ext.oStdClasses, {
      "some":"one"
       },
$.extend( plugin.ext.oStdClasses, plugin.ext.xtraClasses, {
      "some":"two"
       }

有人可以向我解释发生了什么吗?

此外,我想用我自己的逻辑来扩展它:

$.extend( plugin.ext.xtraClasses, plugin.ext.moreClasses, {
      "some":"thing",
      "else":"too"
       }

然而,这似乎给了我一个空的对象。是否可以使用更多类扩展标准类,并覆盖以前的类?

感谢您的一些指示

2 个答案:

答案 0 :(得分:2)

$ .extend扩展首先通过了argumnet。

例如:

var first = {first: true};
var second = {second: true}

$.extend(first, second);

console.log(first); // output {first: true, second: true}
console.log(second); // output {second: true}

var third = $.extend({}, first, second, {third: true});
console.log(third); // output {first: true, second: true, third: true}

答案 1 :(得分:1)

如果你引用docs,它说明extend的第一个参数将是被修改的对象,所以你最好做这样的事情:

var opts = {};
$.extend(opts, plugin.ext.xtraClasses, plugin.ext.moreClasses, { 
   some: "thing",
   else: "too"
});
console.log(opts);