在JavaScript中實值型別和參考型別的區別__Java

來源:互聯網
上載者:User
 

在JavaScript中實值型別和參考型別的區別

儲存方式不一樣

l基礎資料型別 (Elementary Data Type)

變數儲存的是簡單的資料區段,儲存的是具體的值,是輕量級的資料存放區方式

l參考型別

參考型別的值,可以由多個值構成的對象,參考型別的變數儲存的是對象引用地址。參考型別是重量的資料存放區方式,分配在堆記憶體,頻繁建立對象有損效能。

參考型別(N多) Object、Array、Date、Function、……

二、動態屬性不一樣

l參考型別能動態添加屬性

var person=new Object();

 person.name="jack";

 person.age=20;

 console.log("姓名:%s,年齡:%d",person.name,person.age);

結果


說明

屬性動態添加成功

l實值型別不能添加

 

var person="";

 person.name="jack";

 person.age=20;

 console.log("姓名:%s,年齡:%d",person.name,person.age);

 結果


說明

屬性動態添加失敗,說明這是實值型別的變數。

 

賦值的方式不一樣

l實值型別,拷貝變數的內容

var num=10;

var num2=num;//建立新的空間,拷貝num的值到num2。

這個兩個變數的內容是互不影響的,num2的內容是num的一個副本。類似作業系統的複件

var num=10;

var num2=num;

num2=100;//並不會影響到num的值

console.log("num=%d  num2=%d",num,num2);

結果


示範記憶體的演變(現場操作)

 

l參考型別,拷貝引用地址

var person1=new Object();

person1.age=18;

var person2=person1;//拷貝引用地址,給變數person2,於是同時指向一個對象

person2.age=30;//事實上也是person1指向的那個對象

console.log("person1.age=%d   person2.age=%d",person1.age,person2.age);

結果


說明

兩個變數都指向同一個對象,對象就是希望被變數引用的,引用的數量也是沒有限制的。

記憶體變化情況繪圖(現場操作)



 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.