javascript - 数组中的对象位于构造函数中

标签 javascript constructor

当我console.log时,这段代码:

 var Student = function(name, address, gpa){

    console.log(this);
    this.name = name;
    this.address = address;
    this.gpa = gpa;

    console.log("name is equal to " + name);
    console.log("address is equal to " + address);
    console.log("gpa is equal to " + gpa);
};



    var studentCall = [
    new Student ({
        name: "Marshae Hannor",
        address:{
            street: "345 Main St",
            city: "Smyrna",
            state: "GA"},
        gpa: [2.5, 3.5, 4.0]}),
    new Student ({
        name: "Vernon Owens",
        address:{
            street: "439 Serious St",
            city: "Baltimore",
            state: "MD"},
        gpa: [3.5, 3.2, 3.7]})
];

这是我在 console.log 中得到的内容

Object {}
main2.js (line 39)
name is equal to [object Object]
main2.js (line 44)
address is equal to undefined
main2.js (line 45)
gpa is equal to undefined
main2.js (line 46)
Object {}
main2.js (line 39)
name is equal to [object Object]
main2.js (line 44)
address is equal to undefined
main2.js (line 45)
gpa is equal to undefined

有人可以帮助我理解我做错了什么吗?谢谢

最佳答案

在对 Student 的调用中,您传入一个单个参数,它是一个如下所示的对象:

{
    name: "Marshae Hannor",
    address:{
        street: "345 Main St",
        city: "Smyrna",
        state: "GA"},
    gpa: [2.5, 3.5, 4.0]
}

但是您的 Student 函数期望接收三个离散参数。因此,您可以在不使用 {} 的情况下调用它,并且不给出参数名称:

var studentCall = [
    new Student (
        "Marshae Hannor",
        {
            street: "345 Main St",
            city: "Smyrna",
            state: "GA"},
        [2.5, 3.5, 4.0]),
    new Student (
        "Vernon Owens",
        {
            street: "439 Serious St",
            city: "Baltimore",
            state: "MD"},
        [3.5, 3.2, 3.7])
];

或者,修改 Student 以期望仅接收具有这些属性的单个对象:

var Student = function(obj){

    console.log(this);
    this.name = obj.name;
    this.address = obj.address;
    this.gpa = obj.gpa;

    console.log("name is equal to " + this.name);
    console.log("address is equal to " + this.address);
    console.log("gpa is equal to " + this.gpa);
};

关于javascript - 数组中的对象位于构造函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20025811/

相关文章:

C++ 将带有指针的对象添加到 Vector 中

c# - MethodBase.IsConstructor 无法按照静态构造函数指定的方式工作

php - 如何在javascript中显示多行文件内容

c# - 构造函数可访问性 C# 编译器错误 CS0122 与 CS1729

javascript - 其中html属性我可以直接编写javascript代码作为值

javascript - 在 javascript 中使用 var 时输入值未定义

c++ - 类没有成员 "Class"

java - 构造函数在java中返回任何值吗?

javascript - 将参数从网站 URL 传递到 iframe URL

javascript - 如何使用nodejs、expressjs从mongodb获取数据