首页 > 解决方案 > 返回未定义的 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();

你能帮我理解为什么它不能正常工作吗?亲切的问候。

标签: javascriptclassundefined

解决方案


我不明白为什么你的构造函数什么也没做......

简单:你有一个错字contructor-> constructor


推荐阅读