过滤器不是功能

时间:2019-05-12 07:51:18

标签: javascript filter

我正在使用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 个答案:

答案 0 :(得分:2)

作为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 :(得分:0)

Mohan,您利用面向对象程序设计中称为“ 对象构造函数”的东西来创建对象canary,它使用new关键字及其两种方式之一用JavaScript创建对象的方法,另一种方法是利用{},称为对象文字

无论如何,接下来是对诸如filter()之类的 array辅助方法的理解,请注意其为 array 辅助方法。您不能像执行此操作那样在初始化了filter()的对象上运行canary

let canary = new Bird("Tweety");

我知道错误“过滤器不是一个函数”并不清楚,但是它基本上告诉您“嘿,这是您要在其上运行数组辅助函数的对象”,因此,过滤器不是函数(对于对象)。