一般提到引用类型,脑海中通常都会想到一个词叫“同步”,也就是变化在两者之间是同步的,不管是改变引用的值还是变量的值,最终变量和绑定在该变量上的引用这两者的值都会保持一致。
在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中引用类型的简要说明。