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で追加されます。
おしまい
まああんまり使う機会はなさそうですが、頭の片隅に置いておくといつか役に立つ日が来るかもしれません。