js 對象使用的小技巧實例分析
本文實例講述了js 對象使用的小技巧。分享給大家供大家參考,具體如下:
js中中,Object,Array ,Function 等都屬于引用類型,他們的變量名都是指向?qū)ο蟮闹羔槨?/p>
這樣就有一個好處,當(dāng)處理一個復(fù)雜json樹的時候,想要單獨(dú)改變其中某一個子對象屬性時,不需要根據(jù)對象id遍歷查找到這個對象了,而是可以直接通過事件方式將這個對象通過參數(shù)的方式賦值給一個專屬變量,這個變量就指向這個對象,這樣就可以隨意改變對象屬性了。改變這個變量對應(yīng)的對象,整個json樹中的這個對象也被相應(yīng)的改變。
下面舉個栗子,有點(diǎn)類似于雙向綁定,點(diǎn)擊哪個對象就可以單獨(dú)修改這個對象,修改后會在json樹中更新數(shù)據(jù)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div > <ul id="classmates"> </ul> <div class="edit"> <span>姓名:</span> <input type="text" value="" name="name"/> <br /> <span>年齡:</span> <input type="text" value="" name="age"/> </div> </div> <script type="text/javascript"> //保存選中的同學(xué) var classmate={ name:"", age:"" } //同學(xué)列表 var arr=[ { name:"小明", age:22 }, { name:"小黑", age:23 }, { name:"小紅", age:24 }, { name:"小白", age:25 } ]; var nameNode=document.querySelector("input[name='name']"); var ageNode=document.querySelector("input[name='age']"); nameNode.addEventListener("keyup",function(){ classmate.name=nameNode.value; update() //console.log(classmate) }) ageNode.addEventListener("keyup",function(){ classmate.age=ageNode.value; update() }) //進(jìn)行雙向綁定 Object.defineProperty(classmate,'name',{ get:function(){ return classmate['name'] }, set:function(val){ classmate['name'] = val; } }) Object.defineProperty(classmate,'age',{ get:function(){ return classmate['age'] }, set:function(val){ classmate['age'] = val; } }) //重繪ul列表 function update(){ document.querySelector("#classmates").innerHTML=""; for(var i=0;i<arr.length;i++){ var classmate=arr[i]; var li="<li>姓名:"+classmate.name + ";年齡:"+classmate.age +"</li>"; var liNode=parseElement(li); liNode.addEventListener("click",showClassmate(classmate)) document.querySelector("#classmates").appendChild(liNode) } } update() //點(diǎn)擊同學(xué) function showClassmate(data){ return function(){ classmate=data; nameNode.value=classmate.name; ageNode.value=classmate.age; } } //將字符串變成node對象 function parseElement(htmlString){ return new DOMParser().parseFromString(htmlString,'text/html').body.childNodes[0] } </script> </body> </html>
這里面的json數(shù)據(jù)較簡單,如果面對復(fù)雜的多層關(guān)系樹,通過這種方式修改數(shù)據(jù)會很方便
感興趣的朋友可以使用在線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è)計有所幫助。
- JS利用map整合雙數(shù)組的小技巧分享
- JavaScript的一些小技巧分享
- 11個Javascript小技巧幫你提升代碼質(zhì)量(小結(jié))
- 9個JavaScript日常開發(fā)小技巧
- JavaScript編碼小技巧分享
- JavaScript前端開發(fā)時數(shù)值運(yùn)算的小技巧
- 處理JavaScript值為undefined的7個小技巧
- JS 邏輯判斷不要只知道用 if-else 和 switch條件判斷(小技巧)
- javascript json對象小技巧之鍵名作為變量用法分析
- JavaScript中的一些實用小技巧總結(jié)
- JavaScript實用代碼小技巧
- JS 中可以提升幸福度的小技巧(可以識別更多另類寫法)
- 讓你5分鐘掌握9個JavaScript小技巧
- Spark SQL操作JSON字段的小技巧
- JavaScript小技巧帶你提升你的代碼技能
相關(guān)文章
《JavaScript DOM 編程藝術(shù)》讀書筆記之JavaScript 語法
這篇文章主要介紹了《JavaScript DOM 編程藝術(shù)》讀書筆記之JavaScript 語法,需要的朋友可以參考下2015-01-01JS遍歷數(shù)組和對象的區(qū)別及遞歸遍歷對象、數(shù)組、屬性的方法詳解
本文給大家js遍歷數(shù)組和遍歷對象的區(qū)別,一般來說for用來遍歷數(shù)組對象而for-in用來遍歷非數(shù)組對象。接下來小編給大家?guī)砹薺s遍歷數(shù)組和對象的區(qū)別及js遞歸遍歷對象、數(shù)組、屬性的方法詳解,一起看下吧2016-06-06關(guān)于RxJS Subject的學(xué)習(xí)筆記
這篇文章主要介紹了關(guān)于RxJS Subject的學(xué)習(xí)筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12使用bootstrapValidator插件進(jìn)行動態(tài)添加表單元素并校驗
動態(tài)添加表單元素,并調(diào)用bootstrapValidator的方法為表單添加校驗規(guī)則,調(diào)用addField()方法實現(xiàn)功能。下面通過本文看下具體實現(xiàn)方法吧2016-09-09JavaScript實現(xiàn)合并(歸并)排序算法示例解析
這篇文章主要為大家介紹了JavaScript實現(xiàn)合并(歸并)排序算法示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08JS優(yōu)雅的使用function實現(xiàn)一個class
這篇文章主要為大家介紹了JS優(yōu)雅的使用function實現(xiàn)一個class示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12JavaScript 實現(xiàn)簡單的倒計時彈窗DEMO附圖
做一個簡單的設(shè)置網(wǎng)頁,因為需要重啟設(shè)備功能,于是就想在上面加一個倒計時彈窗的界面,下面是具體的實現(xiàn),大家可以參考下2014-03-03