初心者向けのjQuery入門講座|デザイナー向けのJavaScriptライブラリ

このエントリーをはてなブックマークに追加
索引
Core:コアとなる仕組み
Selectors:セレクタ
Attributes:属性
Traversing:対象の変更
Manipulation:操作
CSS:スタイルシート
Events:イベント
Effects:演出効果
Ajax:xml等との連携
Utilities:ユーティリティ
Data:データ
Miscellaneous:諸々
Deferred:処理管理
Callbacks:コールバック
Internals:内部処理

jQuery.isEmptyObject( )空のobjectオブジェクトかどうかをチェック

構文

空のobjectオブジェクトかどうかをチェック返値:true/false
jQuery.isEmptyObject( 調査対象 )ver1.4〜

機能

jQuery.isEmptyObjectメソッドは引数に指定したものが空のobjectオブジェクトかどうかをチェックします。空のobjectオブジェクトであればtrue、異なればfalseを返します。

このメソッドはobjectオブジェクトが空かどうかをチェックするためのメソッドです。なので引数にobjectオブジェクト以外の値を設定した場合は正しく動作しない可能性があります。調査対象がobjectオブジェクトであるかどうかを確認したい場合はjQuery.isPlainObjectメソッドを利用してください。

解説

空のobjectオブジェクトかどうかをチェックする

サンプル(isEmptyObject/01.html)を開いてbody内にbutton要素しかないことを確認して下さい。jQueryでは、まず以下の様に空のobjectオブジェクト「myObj」が作成されていることを確認してください。

var myObj = {};

続いて以下の部分を確認してください。buttonをクリックするとjQuery.isEmptyObjectメソッドを利用して、空のobjectオブジェクトかどうかチェックします。チェックした結果は変数chkに代入しアラートで表示します。

$("button").click(function(){
	var chk = $.isEmptyObject(myObj);
	alert(chk);
});

myObjは空のobjectオブジェクトなので、buttonをクリックするとアラートで「true」と表示されます。ついでに空のobjectオブジェクトではない場合のサンプルも作成しました。

サンプル(isEmptyObject/01b.html)を開いてisEmptyObject/01.htmlとはほとんど同じで、異なるのは以下の様にobjectオブジェクトに値が設定されている点だけです。

var myObj = {aaa:1, bbb:2, ccc:3};

空のobjectオブジェクトではないので、buttonをクリックするとアラートで「false」と表示されます。

関連項目

空のobjectオブジェクトに限定するのではなく、objectオブジェクトであるかをチェックしたい場合は
jQuery.isPlainObjectメソッドを利用してください。

メモ

もっと簡単にチェックできると思ったけれど...

なぜこの様なメソッドがあるのか?もっと簡単に空のobjectオブジェクトをチェックできるのではないかと思ってサンプルを作成したのですが、予想と異なる結果になりました。

サンプル(isEmptyObject/test01.html)を開いて、ほとんどisEmptyObject/01.htmlと同じ事を確認してください。異なるのは以下の部分で、アラートでmyObjと空のobjectオブジェクト「{ }」を比較演算子で比較するように変更しました。

var myObj = {};
$("button").click(function(){
	alert(myObj == {});
});

これでtrueが返ると思ったのですが、実際にbuttonをクリックすると「false」となります。この様な比較式では空のobjectオブジェクトかどうかはチェックできないようです。

引数にはobjectオブジェクト以外を設定しないようにしましょう

jQuery.isPlainObjectメソッドでは配列はobjectオブジェクトではない(false)と判断されます。
にも関わらず、jQuery.isEmptyObjectメソッドでは空の配列をチェックするとtrueとなります。
→サンプル(isEmptyObject/test02.html

var myArray = [];
$(function () {
	$("button").click(function(){
		var chk = $.isEmptyObject(myArray);
		alert(chk);
	});
});

ちなみに空でない配列はきちんと?「false」を返すので空の配列の判定もできそうですが、ブラウザなどの環境によって処理が異なる可能性もあるので、やはり無茶な使い方はしない方がよいと思います。
→参考:空でない配列を設定したサンプル(isEmptyObject/test02b.html