在Array中按OBJ时未定义

时间:2017-05-22 19:37:05

标签: javascript arrays

我试图在画布上为我正在创建的网站创建项目。 在使用对象和数组推送时,我使用警报来指示我在数组中的内容,但它告诉我它未定义。 关于如何解决这个问题或者我在JS中做错了什么的任何建议。 谢谢

function products(tag, name, price, src, description){
    this.Tag = tag;
    this.Name = name;
    this.Price = price;
    this.Src = src;
    this.Description = description;
}

var product = [];

product.push = new products(tag,"name", price, "path/to/my/item", "description");

当我使用所有真实信息执行此操作时,我执行"警报(产品[0] .name)" 它不会显示我的姓名它给了我一个"无法阅读的财产' name'未定义"错误当我执行"警告(产品[0])" 时会发出警报,但它会告诉我"未定义"

3 个答案:

答案 0 :(得分:2)

将您的代码更改为以下内容,即将产品分配到.push()

  

push()方法将新项添加到数组的末尾,并返回新的长度。

product.push(new products(tag,"name", price, "path/to/my/item", "description"));

使用时

product.push = new products(tag,"name", price, "path/to/my/item", "description");

push成为product

的财产

enter image description here

 function products(tag, name, price, src, description){
        this.Tag = tag;
        this.Name = name;
        this.Price = price;
        this.Src = src;
        this.Description = description;
    }

    var product = [];

    product.push(new products('just a tag',"Kevin", 'price', "path/to/my/item", "description"));
    alert(product[0].Name)

答案 1 :(得分:1)

MSG_MORE是一个函数,因此您需要使用parens push来调用它。您正在尝试使用push(),因此无法使用。

在你的情况下,你应该这样做: =

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push?v=control

答案 2 :(得分:1)

首先你应该推

function products(tag, name, price, src, description){
this.Tag = tag;
this.Name = name;
this.Price = price;
this.Src = src;
this.Description = description;
}

var product = [];

product.push(new products("tag", "name", "price", "path/to/my/item", "description"));

并像product[0]["Name"]一样访问该媒体资源 供参考,请查看JavaScript property access: dot notation vs. brackets?

Opps my bad,它适用于此产品[0] .Name也是,属性名称区分大小写,因此将其更改为" Name"