$ .extend如何运作?

时间:2012-09-28 14:41:58

标签: jquery extend

如果我尝试

$.extend(function_arguments, defaults_arguments)

并非所有default_arguments都会被覆盖。例如,如果其中一个是一个函数(this),如果function_arguments中的函数类型不同,它将保留在对象中...

$ .extend究竟做了什么?它不应该像array_merge一样工作,而是用于对象吗?


好的,更明确一点:

....function(args){


  $.extend(args, {
     // here are defaults
     foo: this,
     abc: 1
  });

}

由于某些原因我得到了“foo”的默认值,即使我把它放在args中......

如果我反转对象,例如:

....function(args){


  $.extend({
     // here are defaults
     foo: this,
     abc: 1
  }, args);

}

我只从args中获取属性,默认值完全缺失:|

3 个答案:

答案 0 :(得分:2)

你的.extend倒退了。默认设置为 first

答案 1 :(得分:1)

(我纠正了,这不是它的工作方式)。如果后续指定的对象携带相同的属性,则仅覆盖属性。该函数也不是递归的(因此不会枚举和合并对象的对象属性的属性)您可以根据需要将尽可能多的对象属性组合到第一个对象中。那些多个第三,第四等参数只是你想要合并到第一个中的其他对象。

试试这个:

$.extend(args, foo:this, bar:123);

答案 2 :(得分:0)

jQuery文档中有一个完美的例子:jQuery.extend