0

如果我像这样尝试

$.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 获得属性,完全缺少默认值:|

4

3 回答 3

2

.extend的是倒退。默认值首先出现。

于 2012-09-28T14:50:23.033 回答
1

(我的立场得到纠正,这不是它的工作原理)。仅当后续指定的对象带有相同的属性时,属性才会被覆盖。该函数也不是递归的(因此不会枚举和合并对象的对象属性的属性)您可以根据需要将任意数量的对象属性组合到第一个对象中。那些多个第三、第四等参数只是您想要合并到第一个中的其他对象。

尝试这个:

$.extend(args, foo:this, bar:123);
于 2012-09-28T14:44:57.113 回答
0

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

于 2012-09-28T14:47:53.627 回答