91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript對象引用與賦值的示例分析

發布時間:2021-07-15 13:49:40 來源:億速云 閱讀:135 作者:小新 欄目:web開發

小編給大家分享一下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的值 賦予了myVa
var myVb = myVa; // myVa 賦值給 myVb
myVa = '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對象引用與賦值的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆安县| 肃宁县| 齐齐哈尔市| 建昌县| 额敏县| 莱阳市| 随州市| 巧家县| 夏邑县| 北安市| 洛阳市| 内乡县| 龙江县| 江口县| 和平县| 新河县| 邯郸县| 云霄县| 堆龙德庆县| 琼结县| 高尔夫| 灵川县| 延寿县| 浠水县| 平凉市| 靖边县| 邹城市| 漠河县| 齐齐哈尔市| 武定县| 青海省| 河曲县| 永定县| 迁安市| 叙永县| 延津县| 上饶县| 井陉县| 甘德县| 南靖县| 清苑县|