63

これら 2 つの拡張機能の違いは何ですか?

  angular.extend(a,b);
  $.extend(a,b);

jquery.extend は十分に文書化されていますが、 angular.extend には詳細がなく、コメントには回答がありません。( https://docs.angularjs.org/api/ng/function/angular.extend )。

angular.extend はディープ コピーも提供しますか?

4

4 に答える 4

31

前の回答では言及されていなかった、2 つの微妙な違いが 1 つあります。

jQuery の .extend() を使用すると、値が定義されている場合にのみ、キーと値のペアを条件付きで追加できます。したがって、jQuery では、 this:が未定義の場合$.extend({}, {'a': x ? x : undefined});に返されます。{}x

ただし、Angular の .extend() では、 this:は未定義であってもangular.extend({}, {'a': x ? x : undefined});を返します。そのため、何があっても鍵はそこにあります。{'a': undefined}x

これは、必要なものに応じて、良いことにも悪いことにもなります。とにかく、これは2 つのライブラリの動作の違いです。

于 2014-03-14T11:27:11.670 に答える