10原始值按值传递。对象通过引用传递。
对象属性是通过基于它们的数据类型通过。
这里要传递的整数 - x
表示值1分配x
值2不引用原始对象。
比方说,你在通过属性是一个数组。我调用的第二个函数接收一个数组,并对该数组进行更改。然后,更改将持续到该对象,因为该对象的属性包含对您修改的数组的引用。你没有技术上的修改对象在所有...你只是修改它的对象引用的数组。当你将一个对象属性传递给一个函数时,它根本不知道它属于一个对象。
参见例如,类似于你:
var myObj={a:[1]}
function fn1(x){
x=2; //Overwrites x in this scope to the new primitive 2.
//This isn't reflected in myObj because x is not a
//reference to myObj.a it is a reference to the array
//that myObj.a contains (the [1]).
}
function fn2(x){
x.push(2);
}
fn1(myObj.a); //myObj.a is [1]
fn2(myObj.a); //myObj.a is [1,2]