2015-08-28 63 views
1

只是想知道angular.copy()$jquery.extend(true, {}, obj)之間是否有區別?

根據docs.angularjs.org/api/ng/function/angular.copyapi.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的$.extend()允許您有條件地向擴展對象添加鍵值對。

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

destObj等於:

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

另一個區別最近我發現,是angular.copy會忽略一個名爲$$hashKey財產角內部增加了內ng-repeat對象。

+0

我做了一個快速性能測試,Jquery的$ .extend似乎比angular.copy快得多,這使我理想地認爲我們應該總是使用$ .extend。爲什麼會有人使用angular.copy? –

+1

如果你已經在使用jQuery,並且你不是因爲'$ .extend'更快而添加了jQuery,那麼我就不明白爲什麼不選擇'angular.copy'上的$ .extend'。 – yvesmancera

+0

我最近遇到了這個問題,並且看到angular.copy會凍結整個應用程序(Windows Phone),如果對象很大(例如7.5 MB),$ .extend在這種情況下就像魅力一樣工作。 – graphefruit

相關問題