1.in 可以檢測自有屬性和繼承屬性
var o={x:1}
'x' in o //返回true
'y'in o //返回false
'toString' in o //返回true,因爲對象o繼承了原型的toString屬性
2.hasOwnProperty() 只能檢測自有屬性
var o={x:1};
o.hasOwnProperty('x') //返回true
o.hasOwnProperty('y') //返回false
o.hasOwnProperty('toString') //返回false,因爲對象o繼承的原型的toString屬性
3.使用!==檢測
var o={x:1}
o.x !== undefined //返回true
o.y !== undefined //返回false
o.toString !== undefined //返回true,因爲對象o繼承了原型的toString屬性
使用!需要注意對象的屬性值不能設置爲undefined
注意必須是!,而不是!= 因爲!=不區分undefined和null
var o={x:undefined }
o.x !== undefined //返回false
o.y !== undefined //返回false
參考javascript權威指南第6版