在此代码中:
var ask = prompt("Enter contact's first name");
function Contact(firstName, surname, age) {
this.Name = firstName;
this.Surname = surname;
this.Age = age;
}
var contact = function (person) {
for (var prop in person) {
document.write(prop + ": " + person[prop] + "</br>");
}
};
var Alice = new Contact("Alice", "Example", 24);
var Bob = new Contact("Bob", "Bobby", 39);
contact(ask);
为什么它现在可以使用提示框作为变量?只需在联系人函数中使用字符串,它就可以正常工作。是不是因为它是变量而不是字符串?
答案 0 :(得分:1)
你的for循环正在迭代字符串中的字符数组。所以它实际上是有效的。不确定你的目标是什么。
变量Alice和Bob不会在任何地方使用。这会让我觉得你希望能够根据输入获取一些联系人数据。修改您的联系人功能如下(使用eval)您将能够将提示输入与可能的联系变量匹配:
var contact = function (personName) {
var personObject = eval(personName)
for (var prop in personObject) {
document.write(prop + ": " + personObject[prop] + "</br>");
}
};
答案 1 :(得分:0)
您正在使用字符串调用contact()
函数,然后尝试在其上执行for...in
循环,这没有任何意义。当然,您可以将for...in
与字符串一起使用,但为什么要这样做?它只是遍历每个角色。
答案 2 :(得分:-1)
我将此代码插入编译器并且它不起作用,因为您没有使用if语句来表示函数