2017-03-05 10 views
1

私は、aProdID、aDesc、およびaPriceの3つのパラメータを取るProductというオブジェクト型のコンストラクタ関数を設計しています。 は、alert()を使用して製品オブジェクトの詳細を表示します。たとえば、商品番号が「A001」、「コーク」が6、商品説明が「6」、製品価格が「6」の製品オブジェクトが作成された場合、出力アラートウィンドウには次のように表示されます。なぜアラートがJavascriptで機能しないのですか

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); 

しかし、それはそれで間違って何[オブジェクトオブジェクト] を表示しますか? ありがとうございます

+0

あなたはJSオブジェクトを警告しているを取得するには

alert(product1.aProdID); 

あなたのケース内にオブジェクトとして保存されていることが分かりました。それを文字列に変換する必要があります。アラート(JSON.stringify(product1)); –

+0

デバッグの目的でこれをやっているなら、 'console.log()'を使ってもっと多くの情報を表示し、オブジェクト参照を追跡することができます。 Chromeでは、 'Ctrl + Shift + I 'でコンソールをアクティブにすることができます。 –

答えて

3

product1はオブジェクトです。 alertをパラメータとしてproduct1とすると、product1toStringメソッドが呼び出されます。このメソッドをオーバーライドしていないので、デフォルトの出力が表示されます([Object object])。あなたは私がproductからProductに彼コンストラクタ関数の名前を変更し気付かれるように

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);

サイド

を指摘しています。これはJavaScript言語の非常に一般的な規約です。この関数は、この関数がコンストラクタ関数(新しい演算子とともに他のオブジェクトを作成するために使用できる関数)であることをコードの読者に通知するためです。

さらに、コンストラクタ関数ではなく、にreturn文が必要であるため、return文が削除されました。最後に、私はquantityというローカル変数を削除しました。あなた以下

は、このコンテキストに関する2つの非常に有用なリンクがあります:

+0

ありがとう。あなたの説明は非常に明確です。あなたが私がすぐに勉強しても、あなたが何を意味するかを完全に理解しているからです。私の基本コンセプトを特に改訂してください。 – Wika

+0

あなたは大歓迎です!私は喜んで私が助けた:) – Christos

0

関数を呼び出すために、新しい使用していて、新しい、常に警戒してオブジェクトを作成しますオブジェクトになります。

0

は同じと思うが私に起こったおおその後、私は私の情報は、「A001」

関連する問題