• 引用类型的值是保存在内存中的对象,不允许直接访问,操作对象实际上是在操作对象的引用而不是对象本身。
  • 从一个变量a(假设里面存放字符串“dan”)向另外一个变量b复制基本类型的值:相当于复制一个副本(另外一个字符串“dan”)给b,变量a和b互相不影响。
  • 从一个变量a(假设里面存放对象 object )向另外一个变量b复制引用类型的值:先要说明,a中存放的是object在堆内存中的地址,a可以理解为一个指针,指向object,复制完成后,b中存放的也是object在堆内存中的地址,现在a和b都指向object,b是a的一个副本。不管是操作a还是b,都会互相产生影响。

         var a=new object();

         var b=a;

          a.name="dan";

          alert(b.name); //    "dan"

  •  传递参数问题

          javascript中,所有的参数都是按值传递的。

          向参数传递基本类型的数据时,被传递的值会被复制给局部变量。

          向参数传递引用类型的数据时,传递给局部变量的是对象在内存中的地址,因此局部变量可以直接修改到对象本身(会反应在函数外部)。

       function setname(obj)
      {
     obj.name="dan";
 
      };
     var person1=new Object();
     setname(person1);           //setname()函数中的局部变量现在和person1一样,都指向内存中的object对象,操作函数的局部变量,就会修改到 object对象本身。


      alert(person1.name);   //"dan"               

 

 

posted on 2012-07-10 12:50  pengdan  阅读(109)  评论(1编辑  收藏  举报