фильтр не является функцией - PullRequest
0 голосов
/ 12 мая 2019

Я делаю FreeCodeCamp javascript.Я должен был получить вывод с массивом, который включает все собственные свойства объекта.

function Bird(name) {
  this.name = name;
  this.numLegs = 2;
}

let canary = new Bird("Tweety");

let ownProps = canary.filter(prop => canary.hasOwnProperty(prop))

Когда я выполняю это, я получаю: фильтр не является ошибкой функции.

Ответы [ 2 ]

2 голосов
/ 12 мая 2019

canary, который является экземпляром Bird, является объектом, и у объекта нет никакого метода, называемого filter(). Если вы хотите получить все свойства объекта, используйте Object.getOwnPropertyNames()

function Bird(name) {
  this.name = name;
  this.numLegs = 2;
}

let canary = new Bird("Tweety");

let ownProps = Object.getOwnPropertyNames(canary);

console.log(ownProps)
1 голос
/ 19 мая 2019

Мохан, вы использовали то, что в объектно-ориентированном программировании называется конструктор объекта для создания объекта canary, для этого используется ключевое слово new и один из двух способов создания объекта в JavaScript, другой способ заключается в использовании {}, который известен как литерал объекта .

В любом случае, далее следует понимание вспомогательных методов массива , таких как filter(), обратите внимание на вспомогательный метод array . Вы не можете запустить filter() на объекте, который вы инициализировали canary, как когда вы это сделали:

let canary = new Bird("Tweety");

Я знаю, что ошибка «фильтр не является функцией» не проясняет это, но в основном говорит вам «эй, это объект, на котором вы пытаетесь запустить вспомогательную функцию массива», следовательно, фильтр не является функцией (для объекта).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...