JavaScriptの配列をも〜っと深く理解する:lengthの不思議な動作
白石俊平
2008/02/08 11:00
不思議な挙動をするlengthプロパティを極めて、JavaScriptの配列を卒業するとしよう。
前回のまとめと今回のあらすじ
JavaScriptをより深く知りたい人のための当連載、今回が八回目です。
これまで2回にわたって、JavaScriptの配列についてお話ししてきました。今回は、JavaScriptの配列に関する最後の記事として、普段皆さんが使用している「配列.length」は、実はとても奇妙なプロパティであると言うことをお話ししたいと思います。
lengthプロパティの不思議な動作
前回の記事で、JavaScriptの配列は、単にJavaScriptオブジェクトが持つハッシュテーブル的な機能を利用しているだけだ、と言うことを説明しました。
では、配列とJavaScriptオブジェクトは全く同じなのでしょうか?
結論から言うと、そうではありません。違う点と言えば、配列専用のメソッドをたくさん持っているという点がまず挙げられます。しかしそれは本質的な答えではありません。配列を配列たらしめている要因は、皆さんも間違いなく使ったことがあるであろうlengthプロパティなのです。
lengthプロパティが示す値とは?
lengthプロパティは非常に特殊な動作をします。その1つが「自動的に変化する」という点です。以下のコードを見てください。
var a = [5, 10]; alert(a.length); // → 2が表示される a.push(15); alert(a.length); // → 3が表示される
何も不思議なことはありませんね。lengthプロパティは配列の要素数を表すのですから。
しかし、現在、要素数が3である配列aに対して以下のような処理を行ったらどうなるか、お分かりでしょうか?
a[1000] = 500; alert(a.length); // 何が表示される?
- 特集: JavaScriptのイロハ (16件)
- ホワイトペーパー
- 話題のタグ
Webデザイン
PostgreSQL
Microsoft
Database
server
iPod touch
SOA
Google
Python
JavaScript
Ruby
リファレンス
開発環境
ライブラリ
Apple
小技
PHP
MySQL
Flash
Safari
iPhone
Linux
Apache
まとめ
Eclipse
フレームワーク
Ruby on Rails
Mozilla
Ajax
入門
Firefox
Off Topic
CSS
Tips
Adobe
イロハ
Java
ブラウザ
仮想化
XHTML
Windows
Firefox 3
C/C++
Webアプリケーション開発
Mac OS X
Leopard
RIA
HTML
Internet Explorer
オープンソース
話題のタグを見る »
仮想化Java環境のスループットを2倍に--BEA LiquidVMの適応型メモリ管理
Firefox 3が対応したdisplayプロパティの値(3) - inline-table
MSもアドビも学生さんに開発ソフトを無償提供
「Economist」のトップページがリニューアル
あなたがプログラムを理解できない10の理由:第2回
新APIまもなく登場--Google Developer Day 2008の見所とは?
リスティング広告における競争優位性の維持
-Simplify IT- ITをシンプルに 連載第2回
内部統制対策を実現するIT運用管理ツール