詳解JS數(shù)據(jù)類(lèi)型的值拷貝函數(shù)(深拷貝)
廢話不多說(shuō)了,直接給大家貼代碼了,具體代碼如下所示:
function mottoClone (obj) { if (obj === null || typeof obj !== 'object') return obj; if (obj instanceof Boolean) return new Boolean(obj.valueOf()); if (obj instanceof Number) return new Number(obj.valueOf()); if (obj instanceof String) return new String(obj.valueOf()); if (obj instanceof RegExp) return new RegExp(obj.valueOf()); if (obj instanceof Date) return new Date(obj.valueOf()); var cpObj = obj instanceof Array ? [] : {}; for (var key in obj) cpObj[key] = myClone(obj[key]); return cpObj; }
支持的數(shù)據(jù)類(lèi)型或格式有:Boolean,Number,String,RegExp,Date,Function,Array,JSON
支持深拷貝(循環(huán)迭代),如:
var obj = { id: 1, name: 'xxx', sayName: function () { console.log('my name is' + this.name); }, childs: [ {}, {}, ... ], opts: { xxx: [], ... }, ... }; var newObj = mottoClone(obj);
以上所述是小編給大家介紹的JS數(shù)據(jù)類(lèi)型的值拷貝函數(shù)(深拷貝),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
js文本框輸入點(diǎn)回車(chē)觸發(fā)確定兼容IE、FF等
js文本框輸入點(diǎn)回車(chē)觸發(fā)確定兼容IE、FF等,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下2013-11-11基于javascript實(shí)現(xiàn)的搜索時(shí)自動(dòng)提示功能
這篇文章主要介紹了基于javascript實(shí)現(xiàn)的搜索時(shí)自動(dòng)提示功能,非常實(shí)用,推薦給需要的小伙伴參考下。2014-12-12微信小程序 調(diào)用微信授權(quán)窗口相關(guān)問(wèn)題解決
這篇文章主要介紹了微信小程序 調(diào)用微信授權(quán)窗口相關(guān)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07談?wù)凧SON對(duì)象和字符串之間的相互轉(zhuǎn)換JSON.stringify(obj)和JSON.parse(string)
這篇文章主要介紹了談?wù)凧SON對(duì)象和字符串之間的相互轉(zhuǎn)換JSON.stringify(obj)和JSON.parse(string)以及JSON的parse()和stringfy()方法詳解,感興趣的朋友一起看看吧2015-10-10IE8的JavaScript點(diǎn)擊事件(onclick)不兼容的解決方法
這篇文章主要介紹了IE8的JavaScript點(diǎn)擊事件(onclick)不兼容的解決方法,大家參考使用吧2013-11-11