0

在这段代码中:

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);

为什么它现在可以使用提示框作为变量?当您仅在联系函数中使用字符串时,它可以正常工作。因为它是一个变量而不是一个字符串,所以有什么关系吗?

4

3 回答 3

1

您的 for 循环正在迭代字符串中的字符数组。所以它实际上是有效的。虽然不确定你的目标是什么。

变量 Alice 和 Bob 没有在任何地方使用。这会让我觉得您希望能够根据输入获取一些联系人数据。如下修改您的联系函数(使用 eval),您将能够将提示的输入与可能的现有联系变量相匹配:

var contact = function (personName) {
    var personObject = eval(personName)
    for (var prop in personObject) {
        document.write(prop + ": " + personObject[prop] + "</br>");
    }
};
于 2013-05-05T08:20:36.807 回答
0

您正在contact()使用字符串调用您的函数,然后尝试对其进行for...in循环,这没有任何意义。当然,您可以使用for...in字符串,但您为什么要这样做?它只是循环遍历每个字符。

于 2013-05-05T07:45:14.643 回答
-1

我将此代码插入编译器,但它不起作用,因为您没有使用 if 语句来表示函数

于 2014-08-04T12:42:08.337 回答