2015-08-28 2 views
1

Просто хотел узнать, есть ли разница между angular.copy() и $jquery.extend(true, {}, obj)?

Согласно docs.angularjs.org/api/ng/function/angular.copy и api.jquery.com/jquery.extend, оба, похоже, делают глубокий клон, но метод jquery кажется намного быстрее.

Любые предложения?

+0

Вы прочитали код? –

+0

https://docs.angularjs.org/api/ng/function/angular.copy и https://api.jquery.com/jquery.extend/, кажется, указывают, что оба делают глубокую копию. –

+0

Даниэль. немного более конкретным? –

ответ

2

jQuery's $.extend() позволяет условно добавлять пары ключ-значение к расширенному объекту.

var sourceObj = { foo: 'bar' }; 
var destObj = $.extend(sourceObj, { added: 'addedProp'}); 

destObj равно:

{foo: "bar", added: "addedProp"} 

Другое различие, которое я недавно обнаружил, что angular.copy будет игнорировать свойство $$hashKey который Угловая внутри добавляет к объектам внутри ng-repeat.

+0

Я сделал быстрый тест производительности, и $ .extend JQuery кажется намного быстрее, чем angular.copy, что заставляет меня думать, что мы всегда должны использовать $ .extend. Зачем вообще использовать угловую? –

+1

Если вы уже используете jQuery, и вы не добавляете jQuery только потому, что '$ .extend' быстрее, то я не понимаю, почему бы не выбрать' $ .extend' над 'angular.copy'. – yvesmancera

+0

Недавно я столкнулся с этой проблемой и увидел, что угловая копия заморозит все приложение (Windows Phone), если объект имеет большой размер (7,5 МБ, например). $ .extend работает как шарм в этой ситуации. – graphefruit

Смежные вопросы