javascript - 为什么此函数打印 "undefined undefined"作为联系人姓名,并添加 “new Object” ?

标签 javascript javascript-objects

我正在学习 JavaScript 类(class) Codecademy 。在本练习中,我们应该创建函数 add ,该函数应该将一个人添加到 contacts 数组中,然后使用提示从用户那里获取信息,之后我们将其称为函数 list,以将 contacts 数组中的所有人员打印到控制台。

当我运行下面的代码时,它列出了 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/

关于javascript - 为什么此函数打印 "undefined undefined"作为联系人姓名,并添加 “new Object” ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12134532/

相关文章:

javascript - 如何在满足条件时打破 CasperJS 的重复功能?

javascript - 如何修复 Mongoose 接口(interface)中的 ObjectParameterError 错误

javascript - 在对象中的各个元素上使用 jQuery .append

javascript - 使用文件名作为键将文件数组转换为对象的更简洁的方法

javascript - 是否有用于页面滚动时元素进入动画的 jQuery 库?

JavaScript 无法检索 FileReader 变量

Javascript 对象 - 使用 jQuery 和 this

javascript - 查找数组中具有特定键的特定值的对象的索引

JavaScript :Multiple variables returned from a global function isn't able to be accessed by object

javascript - 通过单击按钮显示 JSON