javascript實現物件直接量合併效果
使用jQuery的$.extend()方法可以輕鬆的實現物件合併效果。
關於$.extend()可以參閱jQuery.extend()方法一章節。
下面就通過程式碼例項介紹一下如何利用原生javascript實現此功能。
程式碼如下:
[JavaScript] 純文字檢視 複製程式碼var one={ webName:"螞蟻部落", } var two = { url:"softwhy.com", func:function(){ console.log("青島市南區"); } } var three={ age:2 }; function cloneObj(oldObj) { //複製物件方法 if (typeof(oldObj) != 'object') return oldObj; if (oldObj == null) return oldObj; var newObj = new Object(); for (var prop in oldObj) newObj[prop] = cloneObj(oldObj[prop]); return newObj; }; function extendObj() { //擴充套件物件 var args = arguments; if (args.length < 2) return; var temp = cloneObj(args[0]); //呼叫複製物件方法 for (var n = 1; n < args.length;n++){ for (var index in args[n]) { temp[index] = args[n][index]; } } return temp; } var t=extendObj(one,two,three); console.log(t); console.log(one); console.log(two); console.log(three);
上面的程式碼實現物件的合併效果,並返回一個全新的合併後的物件,下面介紹一下它的實現過程。
一.程式碼註釋:
1.var one={}表示宣告一個物件直接量。後面三個都是如此。
2.function cloneObj(oldObj) {},此方法可以拷貝一個物件,引數就是要拷貝的物件。
3.if (typeof(oldObj) != 'object') return oldObj,如果引數不是一個物件,那麼直接返回此引數。
4.if (oldObj == null) return oldObj,如果引數為null,則直接返回null。
5.var newObj = new Object(),建立一個新的物件。
6.for (var prop in oldObj)
newObj[prop] = cloneObj(oldObj[prop]);
遍歷物件中的每一個屬性,為新建的物件新增對應的屬性和屬性值。
注意這裡採用遞迴的方式,這是因為要拷貝物件的屬性值有可能也是一個物件。
7.return newObj,返回拷貝的新物件。
8.function extendObj() {},擴充套件指定的物件,其實就是擴充套件第一個物件,不過返回的是一個新的物件,元物件都不變。
9.var args = arguments,將傳遞的實參複製給args變數。
10.if (args.length < 2) return,如果只傳遞了一個引數,那麼直接跳出函式,因為沒有什麼要擴充套件的。
11.var temp = cloneObj(args[0]),獲取第一個引數物件的拷貝。
12.for (var n = 1; n < args.length;n++),遍歷除第一個的以外的所有引數。
13.for (var index in args[n]) {
temp[index] = args[n][index];
},為temp物件擴充套件相應的屬性。
14.return temp,返回擴充套件後的物件。
二.相關閱讀:
1.for in語句可以參閱javascript的for in語句一章節。
2.object物件javascript獲取物件直接量中的屬性和屬性值一章節。
相關文章
- JavaScript 物件直接量JavaScript物件
- JavaScript 推薦直接量建立陣列或者物件JavaScript陣列物件
- Javascript實現動畫效果JavaScript動畫
- javascript如何判斷物件直接量中是否含有指定屬性JavaScript物件
- javascript 物件合併程式碼例項簡單分析JavaScript物件
- javascript獲取物件直接量中的屬性和屬性值JavaScript物件
- js物件合併方法JS物件
- javascript實現的合併兩個陣列程式碼例項JavaScript陣列
- JavaScript實現選項卡效果JavaScript
- JavaScript實現文字豎排效果JavaScript
- 用JavaScript實現動畫效果 (轉)JavaScript動畫
- 物件直接量內方法的寫法物件
- JavaScript實現隨機抽獎效果JavaScript隨機
- javascript實現的放大效果程式碼JavaScript
- javascript實現延遲載入效果JavaScript
- javascript實現文字拼寫動畫效果JavaScript動畫
- JSON字串轉換為物件直接量JSON字串物件
- jQuery實現的陣列合並效果jQuery陣列
- JS--陣列物件合併JS陣列物件
- JavaScript 差量更新的實現JavaScript
- 《JAVA併發程式設計實戰》物件的組合Java程式設計物件
- javascript中直接量的概念是什麼JavaScript
- 劍指 Offer 25. 合併兩個排序的連結串列 JavaScript實現排序JavaScript
- JavaScript、CSS實現滑鼠跟隨繁花效果JavaScriptCSS
- javascript如何實現二維陣列效果JavaScript陣列
- 用Javascript實現選單摺疊效果JavaScript
- js將物件直接量轉換為字串形式JS物件字串
- 通過Guava實現兩個包含不同物件的List合併成一個ListGuava物件
- javascript實現滑鼠懸浮圖片實現抖動效果JavaScript
- Javascript實現物件導向繼承JavaScript物件繼承
- JavaScript 物件字面量(object literal)JavaScript物件Object
- JavaScript concat()合併陣列JavaScript陣列
- js合併兩個陣列物件JS陣列物件
- javascript實現animate()動畫效果程式碼例項JavaScript動畫
- javascript實現的控制瀏覽器全屏效果 [JavaScript瀏覽器
- javascript實現的動態時間日期效果JavaScript
- 物件直接量屬性為數字時如何取值物件
- JavaScript物件導向—繼承的實現JavaScript物件繼承