js 對(duì)象使用的小技巧實(shí)例分析
本文實(shí)例講述了js 對(duì)象使用的小技巧。分享給大家供大家參考,具體如下:
js中中,Object,Array ,Function 等都屬于引用類型,他們的變量名都是指向?qū)ο蟮闹羔槨?/p>
這樣就有一個(gè)好處,當(dāng)處理一個(gè)復(fù)雜json樹(shù)的時(shí)候,想要單獨(dú)改變其中某一個(gè)子對(duì)象屬性時(shí),不需要根據(jù)對(duì)象id遍歷查找到這個(gè)對(duì)象了,而是可以直接通過(guò)事件方式將這個(gè)對(duì)象通過(guò)參數(shù)的方式賦值給一個(gè)專屬變量,這個(gè)變量就指向這個(gè)對(duì)象,這樣就可以隨意改變對(duì)象屬性了。改變這個(gè)變量對(duì)應(yīng)的對(duì)象,整個(gè)json樹(shù)中的這個(gè)對(duì)象也被相應(yīng)的改變。
下面舉個(gè)栗子,有點(diǎn)類似于雙向綁定,點(diǎn)擊哪個(gè)對(duì)象就可以單獨(dú)修改這個(gè)對(duì)象,修改后會(huì)在json樹(shù)中更新數(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對(duì)象 function parseElement(htmlString){ return new DOMParser().parseFromString(htmlString,'text/html').body.childNodes[0] } </script> </body> </html>
這里面的json數(shù)據(jù)較簡(jiǎn)單,如果面對(duì)復(fù)雜的多層關(guān)系樹(shù),通過(guò)這種方式修改數(shù)據(jù)會(huì)很方便
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JS利用map整合雙數(shù)組的小技巧分享
- JavaScript的一些小技巧分享
- 11個(gè)Javascript小技巧幫你提升代碼質(zhì)量(小結(jié))
- 9個(gè)JavaScript日常開(kāi)發(fā)小技巧
- JavaScript編碼小技巧分享
- JavaScript前端開(kāi)發(fā)時(shí)數(shù)值運(yùn)算的小技巧
- 處理JavaScript值為undefined的7個(gè)小技巧
- JS 邏輯判斷不要只知道用 if-else 和 switch條件判斷(小技巧)
- javascript json對(duì)象小技巧之鍵名作為變量用法分析
- JavaScript中的一些實(shí)用小技巧總結(jié)
- JavaScript實(shí)用代碼小技巧
- JS 中可以提升幸福度的小技巧(可以識(shí)別更多另類寫法)
- 讓你5分鐘掌握9個(gè)JavaScript小技巧
- Spark SQL操作JSON字段的小技巧
- JavaScript小技巧帶你提升你的代碼技能
相關(guān)文章
《JavaScript DOM 編程藝術(shù)》讀書筆記之JavaScript 語(yǔ)法
這篇文章主要介紹了《JavaScript DOM 編程藝術(shù)》讀書筆記之JavaScript 語(yǔ)法,需要的朋友可以參考下2015-01-01JS遍歷數(shù)組和對(duì)象的區(qū)別及遞歸遍歷對(duì)象、數(shù)組、屬性的方法詳解
本文給大家js遍歷數(shù)組和遍歷對(duì)象的區(qū)別,一般來(lái)說(shuō)for用來(lái)遍歷數(shù)組對(duì)象而for-in用來(lái)遍歷非數(shù)組對(duì)象。接下來(lái)小編給大家?guī)?lái)了js遍歷數(shù)組和對(duì)象的區(qū)別及js遞歸遍歷對(duì)象、數(shù)組、屬性的方法詳解,一起看下吧2016-06-06關(guān)于RxJS Subject的學(xué)習(xí)筆記
這篇文章主要介紹了關(guān)于RxJS Subject的學(xué)習(xí)筆記,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12使用bootstrapValidator插件進(jìn)行動(dòng)態(tài)添加表單元素并校驗(yàn)
動(dòng)態(tài)添加表單元素,并調(diào)用bootstrapValidator的方法為表單添加校驗(yàn)規(guī)則,調(diào)用addField()方法實(shí)現(xiàn)功能。下面通過(guò)本文看下具體實(shí)現(xiàn)方法吧2016-09-09JavaScript實(shí)現(xiàn)合并(歸并)排序算法示例解析
這篇文章主要為大家介紹了JavaScript實(shí)現(xiàn)合并(歸并)排序算法示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08js定時(shí)器不準(zhǔn)確問(wèn)題的解決方法
本文主要介紹了js定時(shí)器不準(zhǔn)確問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06JS優(yōu)雅的使用function實(shí)現(xiàn)一個(gè)class
這篇文章主要為大家介紹了JS優(yōu)雅的使用function實(shí)現(xiàn)一個(gè)class示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12JavaScript 實(shí)現(xiàn)簡(jiǎn)單的倒計(jì)時(shí)彈窗DEMO附圖
做一個(gè)簡(jiǎn)單的設(shè)置網(wǎng)頁(yè),因?yàn)樾枰貑⒃O(shè)備功能,于是就想在上面加一個(gè)倒計(jì)時(shí)彈窗的界面,下面是具體的實(shí)現(xiàn),大家可以參考下2014-03-03