我只是在做一些练习题,一个问题问我是否有一个函数,该函数接受一个对象和一个键,然后检查该键是否存在于对象中。如果是这样,则返回true,否则返回false,所以我这样写道:
function check(obj,key) {
if (!!obj[key]) {
return true;
} else { return false}
}
自动检查器一直说这是不正确的。当我将其切换为if (obj.hasOwnProperty(key)
时,测试用例通过了。
他们不是在完成同一件事吗?
编辑:我看到每个人都说hasOwnProperty
对于检查属性是否也没有继承是必要的。我对此进行了测试:
function Car() {
this.wheels = 4;
this.engines = 1;
}
function Ferrari() {
Car.call(this);
this.price = 200000;
this.color = 'red';
}
如果我执行let obj = new Ferrari()
,然后执行obj.hasOwnProperty(“ wheels”),我就回来了-既然它是继承的属性,那不应该回来吗?