2012-03-07 8 views
0

の、テキストとして全体の方法を返す私は、コンストラクタ関数に新しいです、と私は私が含ま.jsファイルに次き:オン私のjavascriptのコンストラクタ関数法ではなく、期待戻り値

// should just get the number of customers out of the passed-in object 
function myCustomers(customerObj) { 
    this.customerCount = function(customerObj) { 
     return customerObj.length; 
    }; 
} 

.jsファイルが含まれた.htmページ、私は次のようしている:

var tmpObj = new myCustomers(custObj); 
alert(tmpObj.customerCount); 
私が期待したもの

は私に、このような「1」として顧客の数を、与えるために警告した、などの代わりに、アラートが含まれています文字列であるかのように、私の関数全体のテキストは次のようになります。

function(customerObj) { 
    return customerObj.length; 
} 

私は検索には機能、テキスト/文字列、メソッドなどの非常に一般的な単語が含まれているので、これは簡単な答えです。もっと複雑な関数から慎重に考えて、問題を理解しやすくしてください。 I にはがあり、このより単純な機能が同じ結果でテストされています。

ありがとうございます!

答えて

2

それはあなたが実際に関数を呼び出し、代わりに関数自体を渡していない、あなたの警告のように見えますalert()。これを試してください:あなたは関数を呼び出すとき、再びそれを渡す必要はありませんので、

alert(tmpObj.customerCount(custObj));あなたはまた、あなたのmyCustomersを変更する場合があります

は、コンストラクタに渡されるオブジェクトにハングアップするために、オブジェクト。

+0

ありがとう、その答えは両方私の問題を修正_and_私はテキストとして戻って関数を取得していた理由を説明します。私は速い答えに感謝します!あなたのアドバイスでは、 'this.customers = custObj;'のようなものをコンストラクタに追加してから、 'return this.customer.length;'メソッドを呼び出すことを意味しますか? – tengen

+0

うん、それはまさにそれです。 –

2

あなたはこのようなメソッドを呼び出す必要があります。

var tmpObj = new myCustomers(custObj); 
alert(tmpObj.customerCount(custObj)); 

注方法のカッコ;)

+0

ありがとうMatuDuke ...私は間違って 'this.customerCount'がメソッド自体の代わりにメソッドの戻り値だと思っています。私はその権利を持っていますか?速い助けをありがとう! – tengen

関連する問題