in in 操作检查对象中是否有名为 property 的属性。也可以检查对象的原型,以便知道该属性是否为原型链的一部分。
对于一般的对象属性需要用字符串指定属性的名称
1
2
3
|
var
mycar = {make:
"Honda"
, model:
"Accord"
, year: 1998};
"make"
in
mycar
// returns true
"model"
in
mycar
// returns true
|
对于数组属性需要指定数字形式的索引值来表示数组的属性名称(固有属性除外,如length)
1
2
3
4
5
6
7
8
|
// Arrays
var
trees =
new
Array(
"redwood"
,
"bay"
,
"cedar"
,
"oak"
,
"maple"
);
0
in
trees
// returns true
3
in
trees
// returns true
6
in
trees
// returns false
"bay"
in
trees
// returns false (you must specify the index number,
// not the value at that index)
"length"
in
trees
// returns true (length is an Array property)
|
in的右边必须是一个对象,如:你可以指定一个用String构造器生成的,但是不能指定字符串直接量的形式:
1
2
3
4
|
var
color1 =
new
String(
"green"
);
"length"
in
color1
// returns true
var
color2 =
"coral"
;
"length"
in
color2
// generates an error (color is not a String object)
|
如果你使用delete操作符删除了一个属性,再次用in检查时,会返回false,如:
1
2
3
4
5
6
7
|
var
mycar = {make:
"Honda"
, model:
"Accord"
, year: 1998};
delete
mycar.make;
"make"
in
mycar;
// returns false
var
trees =
new
Array(
"redwood"
,
"bay"
,
"cedar"
,
"oak"
,
"maple"
);
delete
trees[3];
3
in
trees;
// returns false
|