2009-07-07 7 views
0

私はJavascriptを初めて使っています。私は「これ」が別の例を使ってどこに縛られているかを理解しようとしています。私は以下のようにいくつかの値を出力するためにconsole.logを使用しています。console.logは未定義に印刷されませんか?

function FuncObject(value) { 
    this.answer = value; 
    this.get_answer = function() { 
     return this.answer; 
    } 
}; 

var f = new FuncObject(42); 

var fanswer = f.get_answer; 
console.log(fanswer()) 

console.logは、 "undefined"ではなく "function"を出力します。 document.writelnは答えがないウィンドウオブジェクトにバインドされているため、正しいものは "undefined"と表示されているようです。今は印刷機能が私を混乱させる。今私はロギングのために何を使用すべきか疑問に思っています。私はこれについての説明を見つけることができません。

おかげで、あなたが気づかなかっただけで包み

+0

実際のコードを貼り付けることはできますか? – Greg

+0

私たちが助けになる場合は、書かれたとおりにコードをコピーして貼り付けてください。 –

+0

申し訳ありませんが、混乱の原因となっていた別のログ(どこかでこれを表示しています)がありました。 console.logとdocument.writlenは明らかに別の場所に印刷されます。 初心者の無知を許してください。みんなありがとう。 –

答えて

1

モハン、念頭に置いてfuncition()

=
this.get_answerのあなたの投稿コードのタイプミスがあります、私はないんだけどあなたの経験レベルを完全に確信していますので、すべての拠点をカバーできます。

function FuncObject(value) { 
    this.answer = value; 
    this.get_answer = function() { 
    return this.answer; 
    } 
}; 

var f = new FuncObject(42); 

var fanswer = f.get_answer; 
console.log(fanswer()) 

あなたは、そのようなことはthis.get_answer機能同等にfanswerを設定してf.get_answerは、機能であるfanswer = f.get_answerを設定しています。あなたがf.get_answerの戻り値が必要な場合

あなたが期待どおりに入れたものと42

返しf.get_answer()console.log(fanswer())印刷未定義を呼び出す必要があります。
console.log(fanswer)とすれば、ファンクションとして記録されます。

機能がであることがわかりません。ご質問には、jsbinは間違いなく記載されています。

+0

あなたは何の答えを得ることができますか?異なるケースで "this"が何を指しているかを理解しようとする試みでは、メソッドへの参照を格納している上記の例では、calls fans.apply(f)を呼び出して明示的バインディングを行う必要があることに同意しますか?これは "f"に束縛される。上記のfanswer()を呼び出すだけで、undefinedが出力されます。 firefoxでは、もし私がdocument.writelnを使うと、undefinedを出力し、console.logは "function"を出力します。私は何が欠けていますか? –

+0

あなたが指定したコードを使用すると、firebugはconsole.logで** function **を出力せず、** undefined **を出力します。私が提供しているコードであなたが話しているエラーを再現することはできません、それは正しく動作するようです。 –

+0

混乱をおかけして申し訳ありません。また、私のためにundefinedをプリントします。私はちょうど別のログメッセージと混同しました。御時間ありがとうございます。私は次回より慎重にしようとします –

関連する問題