javascript - 返回未定义的 Javascript 类属性
问题描述
我正在学习 JavaScript,我有一个练习要做。基本上它是一个显示联系人列表的脚本,并且(奖金要求)提供了一种在其中添加一些联系人的方法。所以我的方法是创建一个对象/类Contact和一个包含联系人列表的类ContactBook。它需要在启动时使用 2 个特定联系人进行初始化。
我最初的问题是应该返回实例值的方法afficheInfos()确实返回未定义的值。我不知道为什么会这样,所以我创建了一个函数 debugContact() 来专注于我的 Contact 类。
我不明白为什么构造函数中的 console.log() 根本不显示。它阻止我调试代码。我试图找到调试代码的方法并使用关键字调试器,但实际上我没有看到它的作用以及它是如何工作的。作为课程的一部分,我做了一个类似的代码(创建一个类的实例并初始化它的数据),效果很好。我无法发现任何特别的差异,所以我想知道我在这里缺少什么。这是当前状态下的 WIP 代码:
/*
Activité : gestion des contacts
*/
// Définir un objet contact
class Contact {
contructor(nom, prenom) {
this.nom = nom;
this.prenom = prenom;
debugger;
console.log(this);
//console.log("Nouveau contact ajouté: "+this.toString());
}
afficheInfos() {
return `Nom: ${this.nom}, Prénom: ${this.prenom}`;
}
}
// Définir un livre de contact
class ContactBook {
constructor() {
const caroleLevisse = new Contact("Carole", "Lévisse");
const melodieNelsonne = new Contact("Mélodie", "Nelsonne");
this.tabContacts = [caroleLevisse,melodieNelsonne];
}
addContact() {
const nom = prompt("Saisissez le nom: ");
const prenom = prompt("Saisissez le prénom: ");
const newContact = new Contact(nom,prenom);
this.tabContacts.push(newContact);
}
displayContacts() {
var i = 0;
//this.tabContacts.forEach(item => console.log(item.toString()));
this.tabContacts.forEach(item => console.log("Index ["+String(i++) + "] donne " + item.afficheInfos()));
/*
for (var contact of this.tabContacts) {
console.log(contact.afficheInfos());
}; //*/
/*
for (var i = 0 ; i < this.tabContacts.length;i++) {
console.log("");
} //*/
}
}
function main() {
contactBook = new ContactBook();
programContinues = true;
while (programContinues) {
displayMenu();
choice = prompt("Choisissez une option: "); //TODO coder la boucle du programme
switch(choice) {
case "1":
contactBook.displayContacts();
break;
case "2":
contactBook.addContact();
break;
default:
programContinues = false;
}
}
console.log("Fin du programme.")
}
function debugContact() {
debugContinues = true;
while (debugContinues) {
choice = prompt("Continuer? ");
switch (choice) {
case "o":
const unPrenom = prompt("Prénom: ");
const unNom = prompt("Nom: ");
var contactTest = new Contact(unNom,unPrenom);
console.log(contactTest.afficheInfos());
break;
default:
debugContinues = false;
}
}
}
function displayMenu() {
console.log("1) Lister les contacts.");
console.log("2) Ajouter un contact.");
console.log("Autre) Quitter");
}
debugContact();
//main();
你能帮我理解为什么它不能正常工作吗?亲切的问候。
解决方案
我不明白为什么你的构造函数什么也没做......
简单:你有一个错字contructor
-> constructor
。
推荐阅读
- linux - 在 Linux 中查找某个文件并打印其创建和修改时间
- java - Java 中需要什么包级别的访问权限?
- google-cloud-platform - f1-micro VM 机器类型是否永远免费?
- python-3.x - 总结一个熊猫数据框
- plc - 自动化工作室“未定义的参考
" 编译器错误 - javascript - 如何从反应组件发出谷歌分析报告 API 请求?
- python - 返回列表列表中的唯一元素
- javascript - :enter 和 :leave Angular 动画没有平滑过渡
- html - 如何将css属性设置为元素而不是innerhtml
- python - Pandas 数据框具有列标题,但找不到应用的过滤器