我试图以更优雅的方式使用hasOwnProperty
。使用hasOwnProperty时无法将null或undefined转换为对象
我这里有这样的代码,它工作正常:
var obj = {
a: 2,
b: 7,
bamboo: 22
};
var keys = Object.keys(obj).filter(key => obj.hasOwnProperty(key));
// keys: [ "a", "b", "bamboo" ]
然而,当我试图通过obj.hasOwnProperty
速记(这应该工作),它不表现我如何期望。
var keys = Object.keys(obj).filter(obj.hasOwnProperty);
// Uncaught TypeError: Cannot convert undefined or null to object
// at hasOwnProperty (<anonymous>)
要确保参数传递给hasOwnProperty
正确的,我已经建立了这个测试用例:
var testFilter = (key) => {
console.log(key);
return true;
};
Object.keys(x).filter(testFilter);
a
,b
和bamboo
都记录到控制台上,所以我知道它正确传递参数。为什么hasOwnProperty
的行为不正常?
btw,键总是返回属性,这些属性是对象的属性。 –