我正在设计一个名为Product的对象类型的构造函数,该函数有3个参数:aProdID,aDesc和aPrice。 使用alert()显示产品对象详细信息。例如,如果产品对象分别使用“A001”,“Coke”,“6”创建产品编号,产品描述和产品价格,则输出警报窗口应显示以下内容。
function product(aProdID, aDesc,aPrice){
var quantity=0
this.aProdID=aProdID;
this.aDesc=aDesc;
this.aPrice=aPrice;
return aProdID, aDesc,aPrice;
}
var product1= new product('A001','Coke',6)
alert(product1);
但它显示[Object Object] 这有什么问题? 非常感谢
答案 0 :(得分:3)
product1
是一个对象。当您将alert
作为参数传递product1
时,会调用toString
的{{1}}方法。由于您没有覆盖此方法,因此您会看到默认输出product1
。
[Object object]
旁注
您会注意到我将构造函数从function Product(aProdID, aDesc, aPrice){
this.aProdID=aProdID;
this.aDesc=aDesc;
this.aPrice=aPrice;
}
Product.prototype.toString = function(){
return 'ProductId: ' + this.aProdID + 'Desc: ' + this.aDesc + 'Price: '+ this.aPrice;
}
var product1= new Product('A001','Coke',6)
alert(product1);
重命名为product
。这是JavaScript语言中非常常见的约定,为了向读者通知该函数是一个构造函数(可以与new运算符一起使用来创建其他对象)。
此外,我删除了return语句,因为构造函数应该不有一个return语句。最后但并非最不重要的是,我删除了名为Product
的局部变量,因为它没有在任何地方使用过。
以下是有关此背景的两个非常有用的链接:
答案 1 :(得分:0)
首先,您使用new来调用函数,new始终创建对象,因此警报将成为对象。
答案 2 :(得分:0)
哦,同样的想法发生在我身上然后我发现我的信息是作为对象存储的,所以在你的情况下
Document document = new Document();
Field fileNameField = new Field("name",
name,
Field.Store.YES,Field.Index.ANALYZED);
Field filePathField = new Field("code",
code,
Field.Store.YES,Field.Index.NOT_ANALYZED);
document.add(fileNameField);
document.add(filePathField);
获得“A001”