我试图在画布上为我正在创建的网站创建项目。 在使用对象和数组推送时,我使用警报来指示我在数组中的内容,但它告诉我它未定义。 关于如何解决这个问题或者我在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])" 时会发出警报,但它会告诉我"未定义"
答案 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
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()
,因此无法使用。
在你的情况下,你应该这样做:
=
答案 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"