Javascript 對象(object)合并操作實例分析
本文實例講述了Javascript 對象(object)合并操作。分享給大家供大家參考,具體如下:
對象的合并
需求:設(shè)有對象 o1 ,o2,需要得到對象 o3
var o1 = { a:'a' }, o2 = { b:'b' }; // 則 var o3 = { a:'a', b:'b' }
方法1:使用JQuery的extend
方法
- **方法定義**:jQuery.extend([deep], target, object1, [objectN])
- > 用一個或多個其他對象來擴(kuò)展一個對象,返回被擴(kuò)展的對象。
- > 如果不指定target,則給jQuery命名空間本身進(jìn)行擴(kuò)展。這有助于插件作者為jQuery增加新方法。 如果第一個參數(shù)設(shè)置為true,則jQuery返回一個深層次的副本,遞歸地復(fù)制找到的任何對象(遞歸合并)。否則的話,副本會與原對象共享結(jié)構(gòu)。 未定義的屬性將不會被復(fù)制,然而從對象的原型繼承的屬性將會被復(fù)制。
o3 = $.extend(o1, o2) // 合并 o1 和 o2, 將結(jié)果返回給 o3. 注意: 此時,o1 == o3! 即 o1 被修改 // 或 o3 = $.extend({}, o1, o2) // 合并 o1 和 o2, 將結(jié)果返回給 o3. 注意: 此時,o1 != o3! 即 o1 沒有被修改
方法2:用 Object.assign(); 網(wǎng)上找的例子:
var o1 = { a: 1 }; var o2 = { b: 2 }; var o3 = { c: 3 }; var obj = Object.assign(o1, o2, o3); console.log(obj); // { a: 1, b: 2, c: 3 } console.log(o1); // { a: 1, b: 2, c: 3 }, 注意目標(biāo)對象自身也會改變。
方法3:遍歷賦值法
代碼邏輯:
- 循環(huán)對象n中的每一個對應(yīng)屬性。
- 確認(rèn)對象n中存在該屬性
- 確認(rèn)對象o中不存在該屬性
var extend=function(o,n){ for (var p in n){ if(n.hasOwnProperty(p) && (!o.hasOwnProperty(p) )) o[p]=n[p]; } };
類似于直接賦值增加屬性:
o3=o1; o3['b']='b'; // o3 ={ o1:'a', o2:'b' };
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
微信小程序template模板與component組件的區(qū)別和使用詳解
這篇文章主要介紹了微信小程序template模板與component組件的區(qū)別和使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05基于JavaScript實現(xiàn)隨機(jī)點(diǎn)名器
這篇文章主要介紹了基于JavaScript實現(xiàn)隨機(jī)點(diǎn)名器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-02-02如何使用瀏覽器擴(kuò)展篡改網(wǎng)頁中的JS?文件
這篇文章主要為大家介紹了如何使用瀏覽器擴(kuò)展篡改網(wǎng)頁中的JS文件實現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05