這是我試圖做的過於簡單的版本。jquery深更換
var usersChoice;
var object1 = {name: 'fu', id:'123', infoArray: [1,2,3,4,5]};
var object2 = {name: 'bar', id:'456', infoArray: [9,8]};
jQuery.extend(true, usersChoice, object1);
然後,如果我想改變我的想法
jQuery.extend(true, usersChoice, object2);
結果:
usersChoice = {name: 'bar', id:'456', infoArray: [9,8,***3,4,5***]};
我要的是與新來完全取代舊的對象。哪怕只是一個深深的擦除功能,我可以打電話之前延長像...
userChoice.nukeItFromOrbit();
對於我試圖記錄只是userChoice =新的對象或不是抄襲只是指向原來的對象。這兩種解決方案都有一個令人討厭的趨勢,即沿線的某一點超出範圍。 (其中一些物體被傳遞爲'this',我懷疑是罪魁禍首)
那麼如何在不重新發明深度複製輪的情況下做到這一點?我一直在尋找,所有我發現的是重新發明輪子或被告知他們是沒有理由的,我將永遠不得不做我正在做的事情。 =/
所以,你希望它合併寄託都只是陣列?或者如果object2缺少名稱,最終結果是否缺少名稱? (另外,給我一個用例,因爲我在這個陣營裏從來不需要這樣做) –
問題不清楚,你想要deepExtend還是你不想深度擴展? – Abid
@Abid我想深刻的更換,舊的對象被所有的數據和新的投入nuked。 –