in演算子の使用法:続JavaScriptのオブジェクトについて
JavaScriptオブジェクトに関する基本的なトピックの最後として、in演算子と言うものをご紹介したいと思います。
JavaScriptをより深く知りたい人のための当連載、今回が五回目です。
前回は、JavaScriptのオブジェクトを簡単に生成するための「オブジェクトリテラル」と、それに関連した話題である「JSON」についてお話ししました。
今回は、JavaScriptオブジェクトに関する基本的なトピックの最後として、in演算子と言うものをご紹介したいと思います。
in演算子
「JavaScriptのオブジェクトにどんなプロパティ(やメソッド)が存在するか」を知りたいことはよくあります。なぜなら、JavaScriptは動的にプロパティを追加/削除することができるため、実際にチェックしてみない限り、オブジェクト内にプロパティがあるかどうかを知ることはできないからです。
そこで用いられるのが「in」演算子です。in演算子は、以下のように二通りの使い方があります。
- オブジェクトにプロパティが存在するかどうかを判定する
- forループとともに用い、オブジェクトのプロパティを全てループ処理する
一般的には、二番目の用途がよく知られています。一応、順番に見ていきましょう。
オブジェクトにプロパティが存在するかどうかを判定する
inを用いてこの判定を行うには、「"プロパティ名" in オブジェクト」という形式をとります。例えば、objと言う変数に「v1」と言うプロパティが存在するかどうかをテストするには以下のようにします。
// (1)
if ("v1" in obj) {
// window.alertが存在するときの処理
}
しかし、この方法はあまり用いられません。なぜなら、ほぼ同じ処理をよりわかり易く記述できるからです。
// (2)
if (obj.v1) {
// window.alertが存在するときの処理
}
この二つの判定方法には細かな違いが存在します(※)が、現実的には後者の判定方法で事足りることがほとんどです。従って、in演算子のこうした用法はあまり用いられません。
※ (2)の方法では、「obj.v1が宣言されていない/undefinedが代入されている/nullが代入されている」と言った細かい差異を読み取れません(全てfalseとなる)。厳密に「宣言されているか」をテストするのがin演算子です。プロパティにundefinedやnullが代入されている場合を厳密に判定するには、「if (obj.v1 !== undefined)」や「if (obj.v1 !== null)」のように行います。
※ さらに、「オブジェクトからプロパティの宣言を取り除く」ための「delete」と言う構文もあります。「delete obj.v1;」のように使用します。ただしdeleteもあまり用いられることはなく、nullやundefinedをプロパティに代入する、と言う処理で代用されることがほとんどです。
- 0人の推薦記事
- 1人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(0)
- 特集: JavaScriptのイロハ (17件)
- 昨日のトップ記事
- 2日前
- 3日前
- 4日前
- 5日前
- ホワイトペーパー
- 話題のタグ
動画再生耐久レース―フル充電からどれだけ耐えた?
心当たりありませんか--あなたの上司がイヤがる5つの話し方
フォームデザイン虎の巻:複数の選択肢を提供する
フォトレポート:技術サポートの悪夢
無料の「Oracle Database XE」で高速バッチ処理:実装のポイント
Firefoxで情報をカンタン・ベンリに整理する
iPhone Safari、Acidテストでは高得点でも…… Firefoxは載らないの?:WebサイトのiPhone 3G対応問題を考える(ソフト編)
WebサイトのiPhone 3G対応問題を考える(ハード編)
フォトレポート:時代を振り返る--「MS-DOS 4」のインストール
SOAと仮想化の関係は?--常に進化を続けるBEAのミドルウェア戦略
ウェブ開発の生産性はどうしたら上がる?--MODIPHI Appsで半日で作るマッシュアップサイト(1)
JailBreakついに:PwnageTool公開
プロジェクトの進行でよくある4つのトラブル
Techno Exchange
DELLが掲げる「新・仮想化アセスメントサービス」
ZDNet Japan Green IT
ZDNet Japan ホスティング特集