hasOwnProperty
をより洗練された方法で使用しようとしています。hasOwnPropertyを使用している場合、nullまたは未定義のオブジェクトをオブジェクトに変換できません
私は正常に動作し、ここで、このコードを、持っている:
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では、キーは常にオブジェクトのプロパティであるプロパティを返します。 –