憨厚生

          ----Java's Slave----
          ***Java's Host***

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            165 隨筆 :: 17 文章 :: 90 評論 :: 0 Trackbacks
          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          公告

          本博客只作為本人學習資料使用,如侵犯你的相關權益,請聯系我!我會盡快做出處理! 如商業用途請讓本人知道,轉摘保留本人姓名,blog地址.
          Email:

          常用鏈接

          留言簿(6)

          隨筆分類(185)

          隨筆檔案(165)

          文章檔案(17)

          http://www.blogcn.com/u3/19/23/zhjhlz/inde

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          轉 http://www.aygfsteel.com/magicdoom/archive/2006/02/27/32555.html

          1.傳值(by value)

          變量的值被復制出一份,與原來的值將不相干,也就是說即使新的值被修改,原來的值也不會改變,JavaScript中基本類型都是傳值的.

          function testPassValue()

          {

             var m=1;

             var n=2;

            

             //m,n的值復制一份,傳遞到passValue

             passValue(m,n);

            

             alert(m);  //將是原有的值

          }

           

          function passValue(a,b)

          {

            a = a+b; //改變a的值,這里a只是原有值的一份copy

            alert(a);  

          }
          輸出結果:
          3
          1 

          2.傳引用(by reference).

          引用本身復制一份傳給function,引用指向的對象并沒有被復制傳遞(java中也是如此),function,如果改變了對象的屬性的值,由于和原來的引用指向的是同一個對象,因此在通過原來的引用訪問到的將是修改過的值;

          但是如果只是在function中將引用指向一個新的對象,將不會改變原對象的值,改變的只是復制的這一份引用.

          (我的理解是:當對象作為參數傳給函數的時候,傳遞的是對象的拷貝!)

          function testPassValue()

          {

            var date = new Date(2006,02,27);

            alert(date.getDate());  //輸出為 27

           

            //date引用本身復制一份,傳遞到passReference,注意date所指向的對象并沒有被復

            passReference(date);

            alert(date.getDate());  //輸出為12

           

            //同上

            changeReference(date);

            alert(date.getDate());  //輸出還為12

          }

          function passReference(da)

          {

           //由于da和原引用指向的是同一個對象,function,通過原有的引用訪問到的將是對象的日期屬性值,將是修改之后的值.

             da.setDate(12); 

          }

          function changeReference(da)

          {

             //此時da引用實際上是原引用的一份copy,將引用本身重新賦值,將不會影響原引用

             da= new Date(2007,05,11); 

          //da引用指向一個新的對象,此時原引用指向的還是原來的對象

             alert(da.getDate());     // 輸出為11

            

          }

          posted on 2009-07-15 11:06 二胡 閱讀(551) 評論(0)  編輯  收藏 所屬分類: JS
          主站蜘蛛池模板: 河池市| 那坡县| 嘉义市| 芜湖市| 温州市| 毕节市| 赤城县| 玉山县| 赫章县| 大港区| 阳山县| 定襄县| 鄂尔多斯市| 宁阳县| 安义县| 手游| 三河市| 灵寿县| 扶风县| 鄢陵县| 灵石县| 华亭县| 大邑县| 南汇区| 万源市| 泗洪县| 黔西| 湘阴县| 错那县| 奉贤区| 淮阳县| 永年县| 潮安县| 达孜县| 玛沁县| 博湖县| 陇南市| 襄垣县| 伊通| 宁武县| 石景山区|