我们需要说明检查对象中是否存在特定键的正确方法。在继续使用正确的方法之前,让我们首先检查一种错误的方法,看看它实际上是如何错误的。
由于JavaScript的易变性,我们可能要检查像这样的对象中是否存在key-
const obj = { name: 'Rahul' };
if(!obj['fName']){}
要么
if(obj['fName'] === undefined){}
这两种都是不正确的方法。为什么?
因为在这种情况下,碰巧没有“ fName”键,但是假设存在一个“ fName”,它被故意设置为false或undefined。
我们的函数应该返回该键不存在,但实际上它们确实存在。因此,在这种情况下,此方法将失败。
刚刚在ES6中引入的in关键字将检查inerable中的条目。因此,要检查键是否存在,我们可以执行以下操作:
('fName' in obj);
hasOwnProperty()
方法(正确的方法)使用Object.prototype.hasOwnProperty()方法,我们可以确定对象是否包含键。
它的语法是-
obj.hasOwnProperty('fName');
方式2和方式3之间的区别只是方式3仅检查被调用的对象实例的属性,而“输入”则检查对象实例的属性以及继承的属性(如果有)。