gpt4 book ai didi

javascript - 在A "Class"中定义一个函数并调用它来打印数组元素

转载 作者:行者123 更新时间:2023-11-28 06:47:36 25 4
gpt4 key购买 nike

我有一个定义的类“汽车”,我需要添加一个函数,该函数接受 bool 参数并根据输入生成输出。我的想法是在 Automobile 类中定义该函数:

function Automobile(year, make, model, type) {
this.year = year; //integer (ex. 2001, 1995)
this.make = make; //string (ex. Honda, Ford)
this.model = model; //string (ex. Accord, Focus)
this.type = type; //string (ex. Pickup, SUV)

function logMe(boolAnswer) {
if (boolAnswer == true) {
console.log(this.year + ' ' + this.make + ' ' + this.model + ' ' + this.type);
} else {
console.log(this.year + ' ' + this.make + ' ' + this.model);
}
};

}

var automobiles = [
new Automobile(1995, "Honda", "Accord", "Sedan"),
new Automobile(1990, "Ford", "F-150", "Pickup"),
new Automobile(2000, "GMC", "Tahoe", "SUV"),
new Automobile(2010, "Toyota", "Tacoma", "Pickup"),
new Automobile(2005, "Lotus", "Elise", "Roadster"),
new Automobile(2008, "Subaru", "Outback", "Wagon")
];

然后对汽车进行排序并通过调用打印排序后的数组:

var newArray = sortArr(yearComparator, automobiles);

newArray.forEach(logMe(true));

但是,当我这样做时,它说 logMe 未定义。我是否需要改变 logMe 的定义方式并使其成为原型(prototype)?我很困惑如何在汽车中定义这个函数?

最佳答案

你的方法

您需要将 logMe 设置为 this 的属性,就像数据一样:

this.logMe = function logMe(boolAnswer) {

然后该功能仍然无法从外部使用。您需要实际从值中获取它:

newArray.forEach((obj) => obj.logMe(true));

原型(prototype)

或者,如果您选择使用 prototype 机制,则可以将 logMe 移到构造函数之外:

Automobile.prototype.logMe = function logMe() { ...

然后您可以直接在forEach中使用它:

newArray.forEach(Automobile.prototype.logMe)

但是如果你想传递一个参数,你需要一些更复杂的摆弄,所以我只使用 lambda。

备注

正如@plalx指出的那样,logMe函数不属于这里。如果有的话,toString 会是一个更好的选择;然后您可以使用该值来实际记录对象。

关于javascript - 在A "Class"中定义一个函数并调用它来打印数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33261876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com