基本類型和引用類型的值
1.基本類型是按值訪問的,因為可以操作其中實際的值,而引用類型指的是可能包含多個值的對象
對於引用類型創建時,我們可以為它定義方法或者屬性,
比如
var person = new Object();
person.name = ‘bob‘;
alert(person.name)
而對於基本數據類型,這樣書寫返回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 ,實際上此處定義的為函數的局部對象,這個對象會在函數執行後立即被銷毀
基本類型和引用類型的值