我正在使用FreeCodeCamp javascript。我应该使用包含对象的所有自身属性的数组来获取输出。
function Bird(name) {
this.name = name;
this.numLegs = 2;
}
let canary = new Bird("Tweety");
let ownProps = canary.filter(prop => canary.hasOwnProperty(prop))
执行此操作时,我得到:筛选器不是函数错误。
答案 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");
我知道错误“过滤器不是一个函数”并不清楚,但是它基本上告诉您“嘿,这是您要在其上运行数组辅助函数的对象”,因此,过滤器不是函数(对于对象)。