国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript對象引用與賦值實例詳解

2019-11-19 17:08:43
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript對象引用與賦值。分享給大家供大家參考,具體如下:

<script type="text/javascript">//例子一: 引用var myArrayRef = new Array(0,1,2); //創建數組對象var mySeconArrayRef = myArrayRef; // 對象復制.myArrayRef[0] = 100; // 修改元素值alert(mySeconArrayRef[0]);/*** 輸出 100; 學過其它語言的都應該知道這里應該輸出的是0 為什么輸出的是100呢?* 上面程序通過把myArrayRef對象復制給了mySeconArrayRef這時就存在了2個獨立的 但最初值是相同的對象* 因為是獨立的為什么修改myArrayRef會對別一個對象有影響呢?大家都知道只有當他們引用的是同一個對象時這時修改一個才會* 對別一個產生影響.但是在javascript語言中創建的對象myArrayRef值中其時保存的是對象的引用(也就是一個地址).* 也就是 我用 new Array生成的保存在內存中而new Array把它所在的地方告訴了myArrayRef,myArrayRef又把這地址告訴了mySeconArrayRef* 他們兩個都指向的是new Array生成對象的地址而不是把對象保存在myArrayRef中,所以通過其中的一個去修改值時其時是修改他們同指象的那對象.*/alert(mySeconArrayRef[0] );//例子二: 賦值var myVa = 'ABC'; //把ABC的值 賦予了myVavar myVb = myVa; // myVa 賦值給 myVbmyVa = 'DEF'; //修改myVa/*** 輸出的是:ABC. 因為是把值保存在了變量了 而不是保存的是引用地址,所以他們兩個是相對獨立的整體.*/alert(myVb);</script>

如果真要復制對象互不影響,則要通過轉換賦值或者遍歷key:value來復制你中的方法和屬性。

注意:對象的子對象也是引用,所以遍歷賦值的時候要判斷,子元素是否是對象,如果子元素是對象,則繼續對子元素進行遍歷賦值。

轉換賦值方式:

var data = {a:1,b:2,c:3,d:[0,1,2,3]};var str = JSON.stringify(data);var data1 = $.parseJSON(str); //$為jQuery對象需要引入jQuery包data1["e"] = 4;data1["d"][0] = 11;console.log(data);console.log(data1);

輸出結果:

{a: 1, b: 2, c: 3, d: [0,1,2,3]}{a: 1, b: 2, c: 3, d: [11,1,2,3], e: 4}

相互沒有影響

當對象引用做為函數參數傳遞時候,依然會相互影響,切記,如下示例:

var data = {a:1,b:2,c:3,d:{q:4,w:5,e:6}};var data1 = data;function con(data2){data2["r"] = 5;console.log(JSON.stringify(data2));}con(data1);console.log(JSON.stringify(data));

輸出結果:

{"a":1,"b":2,"c":3,"d":{"q":4,"w":5,"e":6},"r":5}{"a":1,"b":2,"c":3,"d":{"q":4,"w":5,"e":6},"r":5}

對象引用賦值后,如果將對象置空,相互間是不受影響的,如下:

var arr = {"a":"1","b":"2"};var arr1 = arr;arr = {};arr["a"] = 2;console.log(arr1);console.log(arr);

輸出結果:

{"a":"1","b":"2"},{"a":2}

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌海市| 剑川县| 荥经县| 临湘市| 棋牌| 贵南县| 靖边县| 射阳县| 晴隆县| 基隆市| 海门市| 化德县| 合山市| 扶沟县| 阳新县| 灵川县| 芜湖市| 武乡县| 石嘴山市| 清涧县| 顺昌县| 桃园县| 雷波县| 巩义市| 友谊县| 石渠县| 和龙市| 金川县| 二手房| 本溪市| 冕宁县| 佛冈县| 两当县| 西乌珠穆沁旗| 中江县| 曲阳县| 荃湾区| 阜康市| 卫辉市| 崇信县| 神木县|