gpt4 book ai didi

javascript - 如何在类构造函数中使用 join() 方法?

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

我创建了一个包含属性和方法的类语法。属性有数组,我想在数组上的这些元素之间创建空间。当我创建一个返回具有这些属性的字符串的方法时,我使用 join(', ') 方法在数组的元素之间留出空间。

当我创建实例并在控制台中调用它们时,它不起作用。它给出了这个错误:

*Uncaught TypeError: this.interests.join is not a function*

这是我的代码:

class Person {
constructor(first, last, age, gender, interests) {
this.name = {
first,
last
};

this.age = age;
this.gender = gender;
this.interests = interests;
}


greeting() {
* //here is the problem *
let hobbies = this.interests.join(' ,')
return `Hi. I'm ${this.name.first} I am ${this.age} . I like ${hobbies}`;
}

farewell() {
return `${this.name.first} has left the building. Bye for now!`;
}
}

class Student extends Person {
constructor(first, last, age, gender, interests, grade) {
super(first, last, age, gender, interests);

this.grade = grade;
}
}

let ron = new Student('Ron', 'Weasley', 14, 'Quidditch', 3);
let harry = new Student('Harry', 'Potter', 14, ['Quidditch', 'cause problems'], 3);
let hermione = new Student('Hermione', 'Granger', 14, ['Studying', 'Read'], 3);
let neville = new Student('Neville', '', 14, 'Herbiology', 3);

最佳答案

似乎在某些情况下(ronneville),您传递给构造函数的 interests 参数不是数组,而是一个字符串。

然后,当您稍后调用 greeting 方法时,join 方法不会出现在字符串中,因此会出现错误。

您应该将构造函数中给出的兴趣转换为始终数组,如下所示:

this.interests = Array.isArray(interests) ? interests : [ interests ]

编辑:

正如 Ivar 在下面的评论中所建议的那样,您实际上是在发送一个数字来代替兴趣参数。

constructor(first, last, age, gender, interests)

// ^ ^ ^ ^ ^
// | ++ +---+ +-----+ +----+
// | | | | |

new Student('Ron', 'Weasley', 14, 'Quidditch', 3)

因此,首先,在创建实例时重新排序参数,然后确保它们始终是数组。

关于javascript - 如何在类构造函数中使用 join() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59948461/

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