我正在尝试以hasOwnProperty
更优雅的方式使用。
我在这里有这段代码,它工作正常:
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
?