hasOwnProperty
方法用于檢查一個對象是否具有指定屬性,它不會沿著原型鏈查找屬性。而 in
操作符用于檢查一個對象是否具有指定屬性,包括原型鏈上的屬性。
例如,假設有一個對象 obj
,它有一個屬性 prop
,并且 prop
是從原型鏈繼承而來的屬性:
function Obj() {
this.prop = 'value';
}
Obj.prototype = {
anotherProp: 'anotherValue'
};
var obj = new Obj();
使用 hasOwnProperty
方法和 in
操作符檢查屬性 prop
:
console.log(obj.hasOwnProperty('prop')); // true
console.log('prop' in obj); // true
使用 hasOwnProperty
方法和 in
操作符檢查屬性 anotherProp
:
console.log(obj.hasOwnProperty('anotherProp')); // false
console.log('anotherProp' in obj); // true
從上面的例子可以看出,hasOwnProperty
方法只檢查對象本身的屬性,而 in
操作符在檢查時會沿著原型鏈查找屬性。