Javascript 在“中定义函数”;“类”;并调用它来打印数组元素
我有一个定义的类“Automobiles”,我需要添加一个函数,该函数接受布尔参数并根据输入生成输出。我的想法是在汽车类中定义函数:Javascript 在“中定义函数”;“类”;并调用它来打印数组元素,javascript,arrays,Javascript,Arrays,我有一个定义的类“Automobiles”,我需要添加一个函数,该函数接受布尔参数并根据输入生成输出。我的想法是在汽车类中定义函数: 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.
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的方式并使其成为原型?我不知道该如何在汽车中定义此函数?您的方法
您需要将logMe
设置为this
上的属性,就像数据一样:
this.logMe = function logMe(boolAnswer) {
然后,该功能仍然无法从外部获得。您需要实际从值中获取它:
newArray.forEach((obj) => obj.logMe(true));
原型
或者,如果您选择使用原型
机制,您可以将logMe
移动到构造函数之外:
Automobile.prototype.logMe = function logMe() { ...
然后您可以直接在forEach
中使用它:
newArray.forEach(Automobile.prototype.logMe)
但若你们想传递一个参数,你们需要一些更精细的摆弄,所以我只想用lambda
评论
正如@plalx指出的,logMe
函数不属于这里。如果有的话,toString
会是一个更好的选择;然后您可以使用该值实际记录对象。您的方法
您需要将logMe
设置为this
上的属性,就像数据一样:
this.logMe = function logMe(boolAnswer) {
然后,该功能仍然无法从外部获得。您需要实际从值中获取它:
newArray.forEach((obj) => obj.logMe(true));
原型
或者,如果您选择使用原型
机制,您可以将logMe
移动到构造函数之外:
Automobile.prototype.logMe = function logMe() { ...
然后您可以直接在forEach
中使用它:
newArray.forEach(Automobile.prototype.logMe)
但若你们想传递一个参数,你们需要一些更精细的摆弄,所以我只想用lambda
评论
正如@plalx指出的,
logMe
函数不属于这里。如果有的话,toString
会是一个更好的选择;然后,您可以使用该值来实际记录对象。您已经在构造函数中定义了logMe,将logMe
移动到Automobile
之外,在业务对象上使用logMe
方法是一个可怕的想法。我知道这是为了学习,但日志记录与汽车无关。数据结构应该没有基础设施方面的问题。@plalx我同意,toString
会更好。您已经在构造函数中定义了logMe,将logMe
移动到Automobile
之外在业务对象上使用logMe
方法是一个可怕的想法。我知道这是为了学习,但日志记录与汽车无关。数据结构应该没有基础设施方面的问题。@plalx我同意,toString
会更好。