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