Я пытаюсь использовать hasOwnProperty
более элегантным способом.Невозможно преобразовать null или undefined в объект при использовании 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
?
btw, ключи всегда возвращают свойства, которые являются собственными свойствами объекта. –