当类型检查变量以防止应用崩溃时,我总是使用
var hasBarProperty = foo.hasOwnProperty("bar");
但是我最近添加了一个新的棉绒包装,并在该行上抛出了一个错误,说下面的行更好
var hasBarProperty = Object.prototype.hasOwnProperty.call(foo, "bar");
当我单击错误时,它会显示我不完全理解的解释,
那么第二个为什么比第一个更好?
谢谢
答案 0 :(得分:2)
规则告诉您使用
var hasBarProperty = Object.prototype.hasOwnProperty.call(foo, "bar");
而不是
var hasBarProperty = foo.hasOwnProperty("bar");
由于foo
已被覆盖,hasOwnProperty
可能不可靠:
var foo = {
hasOwnProperty: function() {
return true;
}
};
console.log(Object.prototype.hasOwnProperty.call(foo, "bar")); // false
console.log(foo.hasOwnProperty("bar")); // true