オブジェクトが空か確認する方法
JavaScriptで、オブジェクトの内容が空か否かを確認するには、for...in文を利用しましょう。
サンプルコード
単純な判別
単純に中身がある({a:1}
)か、ない({}
)かを見分ける場合です。isObjectEmpty()の返り値は、空の場合はtrue
、空じゃない場合はfalse
になります。
function isObjectEmpty ( object ) {
for( var key in object ) {
return false ;
}
return true ;
}
isObjectEmpty( {} ) ; // true
isObjectEmpty( {a:1} ) ; // false
継承されたプロパティを除外
インスタンスで作成したオブジェクトを取り扱う際、継承されたプロパティを判定から除外したい場合は、hasOwnProperty()でそのプロパティがインスタンス独自のものかを確認しましょう。
function isObjectEmpty ( object ) {
for( var key in object ) {
if ( object.hasOwnProperty( key ) ) return false ;
}
return true ;
}
var a = {} ;
isObjectEmpty( a ) ; // true
// コンストラクタ
function SYNCER () {} ;
SYNCER.prototype.hoge = 1 ;
// インスタンス (独自のプロパティなし)
var b = new SYNCER () ;
isObjectEmpty( b ) ; // true
// インスタンス (独自のプロパティあり)
var c = new SYNCER () ;
c.fuga = 1 ;
isObjectEmpty( c ) ; // false
デモ
オブジェクトが空か否かを判定するデモです。このデモでは継承されたプロパティを無視する仕様にしています。
function isObjectEmpty ( object ) {
for( var key in object ) {
if ( object.hasOwnProperty( key ) ) return false ;
}
return true ;
}
var a = {} ;
var aaa = isObjectEmpty( a ) ;
function SYNCER () {} ;
SYNCER.prototype.hoge = 1 ;
var b = new SYNCER () ;
var bbb = isObjectEmpty( b ) ;
var c = new SYNCER () ;
c.fuga = 1 ;
var ccc = isObjectEmpty( c ) ;
aaa =
bbb =
ccc =
bbb =
ccc =
関連記事
- 入力フォームの値を取得する方法
- 入力フォームの値を取得するには、プロパティのvalueを参照しましょう。
- 要素に適用されているCSSの値を取得する方法
- 要素に適用されているスタイルシートの値を取得します。
- スクロール終了時に処理を実行する方法
- スクロールを停止したタイミングで処理を実行するには、setTimeout()を利用します。
- 入力フォームに値をセットする方法
- 入力フォームの値をセットするには、valueに目的の値を代入します。
- 選択フォームの値を取得する方法
- 選択フォームのどの項目が選択状態かを取得するには、要素のselectedプロパティを確認します。
- ページを離れる時に警告する方法
- ページを離れる時に警告を表示するには、{{beforeunloadイベント}}を設定します。