最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年03月15日 12:07:28   作者:錢天兵  
這篇文章主要介紹了JavaScript對象引用與賦值,結(jié)合實例形式分析了JavaScript對象引用及賦值的操作技巧與相關(guān)注意事項,需要的朋友可以參考下

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

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

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

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

轉(zhuǎn)換賦值方式:

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);

輸出結(jié)果:

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

相互沒有影響

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

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));

輸出結(jié)果:

{"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);

輸出結(jié)果:

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

更多關(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é)運算用法總結(jié)

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

相關(guān)文章

最新評論

如东县| 抚顺县| 孙吴县| 湖州市| 吐鲁番市| 福建省| 文登市| 民权县| 清镇市| 房山区| 宜兴市| 达拉特旗| 海伦市| 富锦市| 文安县| 温泉县| 雷山县| 万盛区| 从江县| 新干县| 辛集市| 萨迦县| 信宜市| 霍林郭勒市| 新乡市| 周宁县| 乌苏市| 平和县| 华阴市| 鸡西市| 彭州市| 依兰县| 津市市| 司法| 增城市| 深泽县| 榕江县| 二手房| 濮阳市| 奇台县| 桦南县|