基本類型和參考型別的值

來源:互聯網
上載者:User

標籤:說明   屬性   堆記憶體   區別   值傳遞   記憶體   方法   執行   nbsp   

1.基本類型是按值訪問的,因為可以操作其中實際的值,而參考型別指的是可能包含多個值的對象

對於參考型別建立時,我們可以為它定義方法或者屬性,

比如

var person = new Object();

person.name = ‘bob‘;

alert(person.name)

而對於基礎資料型別 (Elementary Data Type),這樣書寫返回undefined ,不會報錯

2.複製基本類型值和參考型別的值時的區別

1>

  var a = 1;

  var b = a;

  此處將基本類型a的值賦給b,相當於建立了另一塊記憶體空間,兩者相互獨立,互不影響

 2>複製參考型別時

  var obj = new Object();

  var obj1 = obj;

  obj.name = ‘bob‘;

  alert(obj1.name) // ‘bob‘

  參考型別複製時,同樣將變數對象中的值複製一份到新變數的記憶體空間中,但新變數是一個指標,指標指向堆記憶體中一個對象,複製完成後,與原變數指向同一個對象,因而,改變會相互影響。

3>函數中參數傳遞 (通過值傳遞)

  都是通過值傳遞,當參數為對象時,不太好理解。

例如: function setName(obj) {

      obj.name = ‘bob‘;

                      obj = new Object();

                      obj.name = ‘alice‘;

            }

            var person = new Object();

            setName(person);

             alert(person.name) // ‘bob‘

             此處輸出bob而非alice  說明參數為值傳遞,因為一旦完成複製後,兩者便相互獨立了,函數中新定義的對象沒有影響到person ,實際上此處定義的為函數的局部對象,這個對象會在函數執行後立即被銷毀

基本類型和參考型別的值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.