javascript中hasOwnProperty和obj.key之间的区别



当我有一个类似var user={name:‘Tom’}的对象时;使用以下说明有什么区别?

if (!user.hasOwnProperty('name')) {
//Some code
}
vs
if (!user.name) {
//some code
}

有什么理由更喜欢这种方式而不是另一种方式吗?

我认为区别在于hasOwnOroperty()只检查专门分配给对象的属性。另一方面,user.name也将检查对象的元组元。在这种情况下,这不会有什么不同,因为我认为对象没有内置的名称属性。

关键区别在于,in将为继承的属性返回true,而hasOwnProperty((将为继承属性返回false。例如,JavaScript中的Object基类具有proto属性、构造函数属性和hasOwnProperty函数。

最新更新