为什么这个功能打印“;未定义的未定义的“;作为联系人名称,添加“新对象”

Why does this function print "undefined undefined" as a contact name, added with “new Object”?

本文关键字:未定义 新对象 添加 对象 功能 打印 联系人 为什么      更新时间:2023-09-26

我正在Codecademy学习JavaScript课程。在本练习中,我们将创建函数add,该函数将向contacts数组中添加一个人,然后使用提示从用户那里获取信息,然后调用函数listcontacts数组中的所有人打印到控制台。

当我运行下面的代码时,它会列出contacts数组中的两个现有人员,但随后会为我试图通过提示添加的人员打印"undefined undefined"。然而,当我打印contacts的长度时,上面写着3,所以添加了一个人。

如有任何帮助,我们将不胜感激。

var bob = {
  firstName: "Bob",
  lastName: "Jones",
  phoneNumber: "(650) 777 - 7777",
  email: "bob.jones@example.com"
};
var mary = {
  firstName: "Mary",
  lastName: "Johnson",
  phoneNumber: "(650) 888 - 8888",
  email: "mary.johnson@example.com"
};
var contacts = new Array(bob, mary);
function printPerson(person) {
  console.log(person.firstName + " " + person.lastName);
}
function list() {
  var length = contacts.length;
  var i;
  for (i = 0; i < length; i++) {
    printPerson(contacts[i]);
  }
}
/*Create a search function
then call it passing "Jones"*/
var search = function(lastName) {
  var number = contacts.length;
  for (i = 0; i < number; i++) {
    if (contacts[i].lastName === lastName) {
      printPerson(contacts[i]);
    }
  }
};
var add = function(firstName, lastName, email, telephone) {
  contacts[contacts.length] = new Object(firstName, lastName, email, telephone);
};
var firstName = prompt("What is your first name");
var lastName = prompt("What is your last name");
var email = prompt("What is your email");
var telephone = prompt("What is your phone number");
add(firstName, lastName, email, telephone);
list();

要创建一个具有属性的新对象,必须为每个属性指定属性名称和属性值。您只是将一个值列表传递给new Object()构造函数,该构造函数不生成您想要的对象类型。

有几种方法可以创建具有属性的新对象,但在这种情况下,只使用文本对象声明格式{name1: val1, name2: val2}可能是最简单的。要做到这一点,请更改此代码:

var add = function(firstName, lastName, email, telephone){
    contacts[contacts.length] = new Object(firstName, lastName, email, telephone);
}; 

到此:

var add = function(firstName, lastName, email, telephone){
    contacts[contacts.length] = {firstName: firstName, lastName: lastName, email: email, phoneNumber: telephone};
}; 

它在这里工作:http://jsfiddle.net/jfriend00/Ea7B5/