jQueryを使うと要素を探したりスタイルを変更したりってのが簡単なんですが、それ以外に「地味に便利」な機能がたくさんありますよね。
その中から、変数の中身の種類を判定するメソッドのシリーズを紹介します。
ちなみに .is()
というものもありますが、今回は関係ありません。
jQuery.isFunction()
関数であればtrue
を返します。
個人的には一番頻繁に使います。使いどころとしては、オプションでコールバック関数を受け付ける場面でしょう。与えられたものが本当に関数であれば実行する、変なものが渡されたときは無視する、というように使えます。
JavaScriptの型の扱いはゆるいと良く言われますが、関数じゃないものに括弧()
をくっつけても実行できなくてエラーになってしまいますので。
jQuery.isEmptyObject()
空のオブジェクトであればture
を返します。一つでもプロパティがあればfalse
になります。
またnull
やundefined
、数値の場合もtrue
になります。さらにObject.prototype
を拡張している場合(prototype.jsを使うとか)は正常に判定できないみたいです。
jQuery.isPlainObject()
{key:123}
みたいなオブジェクトのときtrueを返します。(別に空でもいいです。) それ以外、数値や文字列、配列、独自クラスのインスタンスなんかのときはfalse
になります。
正確に言うと、オブジェクトリテラル{}
ないしObject
コンストラクターnew Object()
を使って生成したオブジェクトである場合にtrue
になります。
jQuery.isArray()
配列であればtrue
を返します。jQueryオブジェクトやarguments
など、配列ではなく「配列風」のオブジェクトはfalse
になります。
場合によってはjQuery.makeArray()
も便利なので、ご検討ください。
jQuery.isXMLDoc()
XML文書のdocument
オブジェクトであればtrue
を返します。
通常使うwindow.document
はHTML文書のdocument
オブジェクトなので、false
になります。jQuery.ajax()
なんかで取得してきたやつはtrue
になります。(もちろんそれがXMLのとき。)
ただしwindow.document
も、XHTMLで書いている場合は、ブラウザーによってはtrue
になります。(Chromeではtrue
、IE 8ではfalse
でした。)
たしかXMLDocumentだと要素の扱い(document.createElement()
とか)が微妙に違っていたような気がしたんですが、ちょっと思い出せません。
jQuery.isWindow()
window
オブジェクトであればtrue
を返します。別ウィンドウ(子フレームとか)のwindow
でもtrue
です。
判定は結構ヌルいです。
jQuery.isNaN()
(〜 1.6.x)
非数値であればtrue
を返します。
組み込み関数のisNaN()
より厳密な判定をするので、Number()
関数で数値が返ってくる値でもfalse
を返したりします。
alert(isNaN(true)); // false、つまり非数値ではない alert(jQuery.isNaN(true)); // true、つまり非数値である
そろそろ公開されそうなjQuery 1.7では削除され、jQuery.isNumeric()
に置き換わりました。
jQuery.isNumeric()
(1.7 〜)
数値であればtrue
を返します。つまりjQuery.isNaN()
の逆です。
jQuery 1.7で追加されます。
おしまい
まああんまり使う機会はなさそうですが、頭の片隅に置いておくといつか役に立つ日が来るかもしれません。