in演算子とは、右のオペランド(演算子引数)に指定したオブジェクトに、左のオペランド(演算子引数)に指定したプロパティが存在するかどうかを調べる演算子。
指定したプロパティが、指定したオブジェクトに存在する場合、「真(true)」を返す。
指定したプロパティが、指定したオブジェクトに存在しなかった場合、「偽(false)」を返す。
undefinedを設定したプロパティについては、「真(true)」を返す。
delete演算子で削除したプロパティについては、「偽(false)」を返す。
構文
プロパティ名 in オブジェクト名
「オブジェクト名」のオブジェクトに、「プロパティ名」のプロパティが存在するかどうかを調べる。
「プロパティ名」のプロパティが、「オブジェクト名」のオブジェクトに存在する場合、「真(true)」を返す。
「プロパティ名」のプロパティが、「オブジェクト名」のオブジェクトに存在しなかった場合、「偽(false)」を返す。
サンプル1
<script type="text/javascript">
var objA = new Object();
objA . propA = "サンプルA";
if( "propA" in objA ){
document . write( objA . propA + "<br />" );
}else{
document . write( "propAはありません。<br />" );
}
if( "propB" in objA ){
document . write( objA . propB + "<br />" );
}else{
document . write( "propBはありません。<br />" );
}
</script>
var objA = new Object();
objA . propA = "サンプルA";
if( "propA" in objA ){
document . write( objA . propA + "<br />" );
}else{
document . write( "propAはありません。<br />" );
}
if( "propB" in objA ){
document . write( objA . propB + "<br />" );
}else{
document . write( "propBはありません。<br />" );
}
</script>
↓↓↓出力結果↓↓↓
サンプル2
undefinedを設定したプロパティについては、「真(true)」を返す。
<script type="text/javascript">
var objB = new Object();
objB . propA = "サンプルA";
if( "propA" in objB ){
document . write( objB . propA + "<br />" );
}else{
document . write( "propAはありません。<br />" );
}
objB . propA = undefined;
if( "propA" in objB ){
document . write( objB . propA + "<br />" );
}else{
document . write( "propAはありません。<br />" );
}
</script>
var objB = new Object();
objB . propA = "サンプルA";
if( "propA" in objB ){
document . write( objB . propA + "<br />" );
}else{
document . write( "propAはありません。<br />" );
}
objB . propA = undefined;
if( "propA" in objB ){
document . write( objB . propA + "<br />" );
}else{
document . write( "propAはありません。<br />" );
}
</script>
↓↓↓出力結果↓↓↓
サンプル3
delete演算子で削除したプロパティについては、「偽(false)」を返す。
<script type="text/javascript">
var objC = new Object();
objC . propA = "サンプルA";
if( "propA" in objC ){
document . write( objC . propA + "<br />" );
}else{
document . write( "propAはありません。<br />" );
}
delete objC . propA;
if( "propA" in objC ){
document . write( objC . propA + "<br />" );
}else{
document . write( "propAはありません。<br />" );
}
</script>
var objC = new Object();
objC . propA = "サンプルA";
if( "propA" in objC ){
document . write( objC . propA + "<br />" );
}else{
document . write( "propAはありません。<br />" );
}
delete objC . propA;
if( "propA" in objC ){
document . write( objC . propA + "<br />" );
}else{
document . write( "propAはありません。<br />" );
}
</script>
↓↓↓出力結果↓↓↓