一般提到引用類型,腦海中通常都會想到一個詞叫“同步”,也就是變化在兩者之間是同步的,不管是改變引用的值還是變量的值,最終變量和綁定在該變量上的引用這兩者的值都會保持一致。
在javascript中有一個特別的類型叫做引用類型,其中包括可能大家比較熟悉的Object類型,Function類型,還有一些如基本包裝類型,RegExp類型等。這些都屬于引用類型,舉例來說:var car_a = {brand: 'benz', color: 'black'}
,這條語句就聲明了一個引用類型變量car_a并賦給了初值,若再添加這行語句:var car_b = car_a; car_b.color = 'red'
,那么現在car_a的color屬性也隨之改變了,可以粗淺的理解成car_a和car_b都是這個對象{brand: 'benz', color: 'black'}
的引用,所以改變一個就會改變這個被引用的“匿名”對象。
了解這個規則之后就可以理解javascript中函數的參數是按值傳遞而不是引用傳遞的了。比如:
<pre>
var color_a = {color: 'blue'}
function cc (obj) {
obj.color = 'red' <code>// obj被賦值后就和color_a指向了同一個對象</code>
obj = {age: '20'} <code>// obj指向了一個新的對象</code>
}
cc(color_a) <code>// color_a = {color: 'red'}</code>
</pre> 如果是按引用傳遞的話那么最后color應該等于{age: '20'},所以這就是關于javascript中引用類型的簡要說明。