0

私がそれを好きなら

$.extend(function_arguments, defaults_arguments)

すべてのdefault_argumentsが上書きされるわけではありません。たとえば、そのうちの1つが関数(this)である場合、function_argumentsの1つが異なるタイプであれば、オブジェクトに残ります。

$ .extendは正確に何をしますか?array_mergeのように機能するべきではありませんが、オブジェクトに対しては機能しますか?


わかりました、より明確にするために:

....function(args){


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

}

何らかの理由で、args内にある場合でも、「foo」のデフォルト値を取得します。

オブジェクトを逆にすると、次のようになります。

....function(args){


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

}

argsからプロパティのみを取得しますが、デフォルトは完全に欠落しています:|

4

3 に答える 3

2

あなた.extendは後ろ向きです。デフォルトが最初になります。

于 2012-09-28T14:50:23.033 に答える
1

(私は修正されたままです、それはそれがどのように機能するかではありません)。プロパティは、後続の指定されたオブジェクトが同じプロパティを持っている場合にのみ上書きされます。この関数は再帰的でもありません(したがって、オブジェクトのオブジェクトプロパティのプロパティは列挙およびマージされません)必要な数のオブジェクトプロパティを最初のオブジェクトに組み合わせることができます。これらの複数の3番目、4番目などの引数は、最初に組み込みたい他のオブジェクトにすぎません。

これを試して:

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

jQueryのドキュメントには完璧な例があります:jQuery.extend

于 2012-09-28T14:47:53.627 に答える