function setName(obj){  
obj.name="endless";   
obj=new Object();  
obj.name="2evening";    
}  
var person=new Object();  
setName(person);  
alert(person.name); //endelss 这段代码摘自《javascript高级编程》。书上说javascript是按值传递参数,但是函数内的更改可以在函数外反映出来,这不是按引用传递的吗?如果是按引用传递,函数内参数被覆盖后却没有反映到函数外,这会又成按值传递了。关于这点十分头大,想不明白,那位大哥指点下。

解决方案 »

  1.   

    这个我也搞不明白了
    期待高人了
    name生效了
    对于引用实例没有生效
      

  2.   

    //确实是传值,只不过传递的值是对象的地址:function setName(obj){  
    obj.name="endless"; //执行时obj的值是person对象的地址
    obj=new Object();  //创建了一个新的对象,并把对象的地址赋给obj变量,此时obj的值已经变成了新创建的对象的地址
    obj.name="2evening";
    //函数执行完成后,obj变量自动销毁
    }  
    var person=new Object();  
    setName(person);  
    alert(person.name); //endelss 
      

  3.   

    看看下面这篇文章,写得比较清楚:
    http://www.365xhzx.com/thread-361-1-1.html