为什么警报不能在Javascript中工作

时间:2017-03-05 09:59:20

标签: javascript

我正在设计一个名为Product的对象类型的构造函数,该函数有3个参数:aProdID,aDesc和aPr​​ice。 使用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] 这有什么问题? 非常感谢

3 个答案:

答案 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”