栗子1:javascript
function setName(obj){
obj.name="Nicholas";
}
var person = new Object();
setName(person);
理解:person 和 obj指向都是同一個對象,也就是堆內存中地址,當修改其屬性name的值時,java
同時外部的person也同時反映出來。spa
栗子2:code
function setName(obj){ obj.name="Nicholas"; obj = new Object(); obj.name="jack"; } var person =new Object(); setName(person); console.log(person.name);//Nickolas
理解:obj =new Object();對象從新指向一個新的對象,因此這樣時候,不在是原來的person的對象,對象
因此在修改了其name時,對於原person對象不起做用。blog
結論:ip
在javascript中參數傳遞沒有引用傳遞,只有值傳遞。內存
基本類型中:只是複製值,當變量1把值賦值給另外一個變量2時,把變量1值複製一份給變量2,io
而這兩個變量不是同一個變量,而是不一樣變量。只是同樣的值而已。console
引用類型中:無非就是兩種狀況
① 參數被修改指向新的對象,此狀況下固然參數已指向新的對象,再修改其屬性方法與參數傳入的對象無關,也就是原對象的變量不受影響。
② 修改傳入的對象的某個屬性或方法,此狀況下,就是就是在修改原引用類型的變量的屬性和方法。