2007-01-15
こんなに JavaScript やってるのに知らなかった基本文法「if in」
if 〜 in なんてあったのね。。。
知らなかった!
使い分け
オブジェクトが真か偽か
if (obj.property) { // ... }
オブジェクトにプロパティがあるかは置いといて undefined ではないことを確かめる
if (typeof obj.property == 'undefined') { // ... }
オブジェクトにプロパティがあるか。
if ('property' in obj) { // ... }
オブジェクト自体(プロトタイプを含まない)にプロパティがあるか
if (obj.hasOwnProperty('property')) { // ... }
まとめ
いっぱいあるなあ。
大抵、一番上のでいいがいろいろ細かい条件があるとたまにどれも必要になるときがある。
Firefox の JavaScript はいつのまにかプロパティの順番が変わることがある
ちょっとした発見があった
Firebug のコンソール(F12で開く)で要素のプロトタイプを for in してみると
// 要 Firebug for (var n in HTMLDivElement.prototype) console.log(n);
style className id getAttribute : :
プロパティの並び順がサイトによって全然違うことに気が付いた
いろいろ試してみた
どうやら、よく使われるプロパティが上にくるようだ。高速化のためだと思う
その並び替えのアルゴリズムはよく分からないが、一回参照しただけで順番が変わる場合もあれば、何回参照しても順番が変わらない場合もあった。
