javascript 传递引用类型参数

时间:2023-03-08 16:46:51

JavaScript代码如下:

function setName(obj){
obj.name = "test1";
obj = new Object();
obj.name = "test2";
} var person = new Object();
setName(person);
alert(person.name);

运行结果:页面弹出“test1”

代码分析:为什么不弹出“test2”?

var person = new Object();    本例中首先生成一个object对象,并将person(类似于指针)指向这个object对象,暂时将这个object对象命名为objectA:person->objectA

setName(person);   将person作为参数传递给setName函数,传递的其实是objectA在内存中的地址,此时函数体中obj就是一个引用类型,指向内存中的objectA对象:obj->objectA,person->objectA

setName()函数体中:

{

代码第一行:obj.name = "test1";     等价于objectA.name=“test1”;   此时obj.name=person.name=“test1”

代码第二行:obj = new Object();      这一句是关键,obj指向了一个新的对象new Object(),暂时命名为objectB,此时obj->objectB,person->objectA

代码第三行:obj.name = "test2";     等价于objectB.name=“test2”,此时person指向的对象ObjectA的name属性仍然为"test1"

}