javascript - js 對象深拷貝和賦值
問題描述
代碼中得到一個數組arr=[1,2,3];因為馬上會被銷毀,所以不能直接賦值給對象Obj.a,請問這種情況jquery如何寫,使得arr銷毀之后Obj.a=[1,2,3]?
問題解答
回答1:一般情況下很少會在 JS 中遇到“銷毀”。然后,我不明白你所謂的立即銷毀是指什么?
如果是指 delete arr,那么直接賦值也不會有問題,如下圖:
如果你是要改變 arr 的內容。那么可以復制一個數組(有幾種方法,concat 只是其中一種)
Obj.a = [].concat(arr);
如果確實需要深拷貝,jQuery.fn.clone(),不過貌似有一些限制。
如果其它數據,自己寫深拷貝還是有點難度也比較麻煩,不如用 Lodash 的 cloneDeep()
回答2:拷貝數組:
利用 sliceobj.a = arr.slice();
obj.a = JSON.parse( JSON.stringify(arr));
沒看懂你銷毀的意思。。。。至于深拷貝:
function cloneObj(obj){ if( !obj || typeof obj == 'string' ){return obj; } else if ( obj instanceof Array ){return [].concat(obj); } else {var tempObj = {};for( var key in obj ){ tempObj[key] = cloneObj(obj[key]);}return tempObj; }}回答4:
如果你使用 ES2015 的話,可以使用對象展開運算符來拷貝。
obj.a = [...arr]
相關文章:
1. 百度地圖api - Android百度地圖SDK,MapView上層按鈕可見卻不可觸,怎么解決?2. mysql - thinkphp5 在MAC電腦本地正常,部署LINUX服務器之后,模型不存在3. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?4. 想找個php大神仿個網站。5. 這是什么情況???6. 微信支付 - python做微信企業付款出現CA證書錯誤7. python執行cmd命令,怎么讓他執行類似Ctrl+C效果將其結束命令?8. 老哥們求助啊9. APP上傳到電腦服務器,出現數據上傳不完整的問題10. javascript - 使用百度文本編輯器ueditor不顯示樣式問題
