記得是在看<<javascript dom編程藝術>>,發現的一些平時我沒有用過的javascript 數組用法。發到群里和網友討論,發現其實還真不是我們表面看到的一樣,唉,的確該多交流啊。

          2007-07-05 16:39:03 -274°C(51411970)
          感覺js數組好強啊
          a =[1,2,3];
          var test = Array(3);
          test["no"]="111";
          test["name"]="zhang3";
          test["age"]="23";
          這樣寫和java里的hashmap一樣,鍵值相對。

          2007-07-05 16:41:36 Hibernate(*)
          [:L]

          2007-07-05 16:41:47 -274°C(51411970)
          [?]

          2007-07-05 16:41:55 Hibernate(*)
          呵呵

          2007-07-05 16:45:05 *(******)
          js的數組如果那樣寫是不對的

          2007-07-05 16:45:27 *(******)
          看起來你添加了3個字符串,你看看你的test.length返回多少

          2007-07-05 16:45:57 *(******)
          你再添加多一些字符串,看看test.length 返回多少

          2007-07-05 16:46:29 *(******)
          test['no']這種形式,只能是對數組對象加了一個no的屬性

          2007-07-05 16:47:27 *(******)
          這時候數組對象和普通的對象沒有區別,你用var obj = new Object(); obj['no'] = 'xxxxx';

          2007-07-05 16:47:32 *(******)
          其實是一樣的

          ……(省略部分爭吵)

          2007-07-05 16:55:04 -274°C(51411970)
          返回的是數組的長度

          2007-07-05 16:55:40 *(******)
          不相信你就用下面的代碼測試
          var a = new Array();
          a['aa'] = 355;
          a['bb'] = 444;
          a['cc'] = 'xxxxx';
          alert(a.length);
           

          2007-07-05 16:56:12 -274°C(51411970)
          你不信你就自己測試:
          var test = Array(3);
          test["no"]="111";
          test["name"]="zhang3";
          test["age"]="23";

          alert("test.length"+test.length);

          2007-07-05 16:56:45 *(******)
          大哥,你已經定義了數組是3了,我還能說什么
           

          2007-07-05 16:56:54 *(******)
          你多添加一個元素試試就知道了
           

          2007-07-05 16:57:22 -274°C(51411970)
          定了長度了!
           

          2007-07-05 16:58:12 *(******)
          非也,其實你定了3個長度的數組,而你只往數組對象上添加屬性了,數組里一個元素也沒有,3個都是空元素

          2007-07-05 16:58:45 *(******)
          另一個測試方法

          2007-07-05 16:59:47 *(******)
          test["clickEvent"] = function() {alert(123);};
          test.clickEvent();

          2007-07-05 16:59:58 *(******)
          還可以添加函數呢
           

          2007-07-05 17:00:22 *(******)
          其實就是把函數或屬性動態添加到數組對象上了

          2007-07-05 17:01:49 -274°C(51411970)
          你不能說是錯的

          2007-07-05 17:02:03 -274°C(51411970)
          /*
          a =[1,2,3];
          var test = Array(3);
          test["no"]="111";
          test["name"]="zhang3";
          test["age"]="23";

          alert("test.length"+test.length);
          for(i in test)
          {
           alert(i+":"+test[i]);
          }
          */
           

          2007-07-05 17:02:15 -274°C(51411970)
          一樣不影響你應用吧

          2007-07-05 17:02:34 -274°C(51411970)
          相反我覺得更方便了

          2007-07-05 17:02:40 *(******)
          不要用in來遍歷數組,in是用來遍歷對象的

          2007-07-05 17:02:53 -274°C(51411970)
          數組 難道不是對象?

          2007-07-05 17:03:29 -274°C(51411970)
          你應該把他習慣看作是對象

          2007-07-05 17:04:12 *(******)
          是呀,但是in有副作用,對于對象來說,比如HTMLElement,會把所有的屬性和方法都遍歷出來

          2007-07-05 17:05:02 流水逝(542816718)
          都是牛人  只是你們討論的我看不懂

          2007-07-05 17:05:03 -274°C(51411970)
          那用在我這里,有副作用嗎?

          2007-07-05 17:05:30 *(******)
          小心用in,多看看Prototype類庫

          2007-07-05 17:05:42 *(******)
          in多是在復制對象是使用,一般不使用

          2007-07-05 17:06:16 -274°C(51411970)
          哦,這個我到沒有得到考證。

          2007-07-05 17:06:37 -274°C(51411970)
          不過你說的那個情況,我的確沒有預料到。

          2007-07-05 17:07:12 *(******)
          由于in可以遍歷對象的所有屬性和方法,所以Prototype庫中有個Object.clone()方法,改方法就是使用in的特性來復制對象

          2007-07-05 17:07:17 -274°C(51411970)
          你說我用in遍歷數組時候,會把他所有元素都搞出來

          2007-07-05 17:07:29 -274°C(51411970)
          我相信

          2007-07-05 17:07:54 -274°C(51411970)
          只是不好理解把他所有方法都搞出來

          2007-07-05 17:08:43 *(******)
          數組好像是個特例

          2007-07-05 17:08:48 -274°C(51411970)
          數組也是對象吧。他也有許多方法。。。

          2007-07-05 17:08:51 -274°C(51411970)
          呵呵

          2007-07-05 17:09:11 -274°C(51411970)
          這正是我剛才覺得搞笑的地方。

          2007-07-05 17:09:11 *(******)
          是的,但是為何偏偏是數組不把所有的屬性和方法遍歷出來,我還沒有找到原因

          2007-07-05 17:10:07 *(******)
          但是通過test["xxx"] = "aaa"這種方式就以為往數組里添加了新元素是不正確的理解,因為元素沒有添加到數組里,數組的長度也沒有發生變化

          2007-07-05 17:11:00 -274°C(51411970)
          把數組看做對象集合

          2007-07-05 17:11:45 *(******)
          如果你不需要length也可以這么使用,我只是提醒大家不要被數組這種特性說誤導,因為以前我做的項目里就被它誤導過

          2007-07-05 17:13:01 -274°C(51411970)
          對象集合 變化就ok 了。
          不過通過這次爭論,還是有所收獲。[share]

          2007-07-05 17:13:26 -274°C(51411970)
          至少你不說,我還真以為你的例子返回是3

          2007-07-05 17:13:41 *(******)
          [share]通過爭論學習

           

          posted on 2007-07-13 23:18 -274°C 閱讀(559) 評論(1)  編輯  收藏 所屬分類: web前端


          FeedBack:
          # re: 和網友關于javascript數組的討論[未登錄]
          2007-07-14 14:41 | 閑耘
          呵呵。理解對象先。  回復  更多評論
            

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊

          JAVA網站

          關注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 914107
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 宝丰县| 刚察县| 常山县| 涟源市| 安陆市| 郎溪县| 北海市| 临西县| 庐江县| 蒲江县| 容城县| 沙河市| 东宁县| 龙南县| 许昌市| 连城县| 文登市| 萍乡市| 鹤岗市| 元氏县| 辽宁省| 原平市| 漾濞| 平武县| 邹平县| 常州市| 工布江达县| 特克斯县| 揭西县| 庄河市| 景泰县| 巴东县| 清苑县| 大埔县| 呼图壁县| 磐安县| 兰考县| 南充市| 石林| 吉木萨尔县| 黔西县|