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
ですか?