私はちょうど1週間ほど前にJavascriptの学習を始めましたが、ちょっとした障害にぶつかりました。提供されたリンクでは、何らかの理由でオブジェクト内の関数を呼び出せません。私が間違っていることは何ですか?どんなアドバイスも素晴らしいでしょう。オブジェクト内の関数を呼び出す方法
0
A
答えて
2
あなたは、関数を呼び出しているが、機能は未定義戻っています。 が別のコンテキストで呼び出される異なる意味を持っているという事実に注意してください。testObj
,this == testObj
であり、したがってthis.word
は未定義です。
多分、fiddleが役に立ちます。
0
var testObj = {
bar: function(){
console.log(this.word)
}
}
あなたはここでtestObj.bar を呼び出すと、これはtestObjを参照し、testObjがあるので何の財産ワード
var testObj = {
bar: function(){
console.log(this.word)
}.bind(this)
}
使用.bind(この)または.bind(ウィンドウ)
0
を持っていません範囲が変更されました。
JavaScriptでは、スコープはコードの現在のコンテキストを参照します。スコープは、グローバルまたはローカルで定義できます。 JavaScriptスコープを理解することは、防弾コードを作成し、より良い開発者になるための鍵です。変数/関数にアクセスできる場所を理解し、コードのコンテキストの範囲を変更し、より迅速でメンテナンス可能なコードを書くことができ、デバッグ時間を大幅に短縮できます。
だから、正しいコードは次のとおりです。あなたのソリューションで
var that = this;
var testObject = { bar: function() { return that.word }}
、 "これは" "ウィンドウ" オブジェクトです。したがって、あなたもこれをコード化することができます:
var testObject = { bar: function() { return window.word }}
関連する問題
- 1. コード内の関数内の関数を呼び出す方法
- 2. オブジェクト表記で内部javascript関数を呼び出す方法
- 3. オブジェクトの内部関数からクラス関数を呼び出す方法
- 4. ワークフロー内の関数から関数を呼び出す方法
- 5. 他の関数内から関数を呼び出す方法
- 6. オブジェクト内の関数から関数を呼び出す(オブジェクトリテラル)
- 7. Javascript:オブジェクト関数内のクリック関数からオブジェクト関数を呼び出す
- 8. jscery関数内でtypescript関数を呼び出す方法は?
- 9. ウィンドウリスナー関数内でコントローラ関数を呼び出す方法
- 10. $ .getJSON関数内でPHP関数を呼び出す方法は?
- 11. Typescriptオブジェクトからオブジェクト関数を呼び出す方法
- 12. Axios内部からの関数呼び出し? axios内から関数を呼び出す方法
- 13. data.tableを呼び出す関数を呼び出す関数の記述方法?
- 14. オブジェクト内の内部関数を呼び出す
- 15. オブジェクト内の関数を呼び出す/使用する方法は?
- 16. 同じオブジェクト内の別の関数を呼び出す方法は?
- 17. オブジェクトの外側から関数を呼び出す方法
- 18. javascriptのオブジェクトでコンストラクタ関数を呼び出す方法は?
- 19. C++でグローバル関数でクラスのオブジェクトを呼び出す方法
- 20. Swift:ランダム関数を呼び出す関数を呼び出す方法は?
- 21. 関数内で関数内の関数を呼び出すイグナイターヘルパー
- 22. 配列内のフィルタ関数を呼び出す方法をjquery
- 23. サーバータグ内のaspxファイルのコードビハインド関数を呼び出す方法
- 24. 関数間でSQLite Cursorオブジェクトを呼び出す方法は?
- 25. Pythonでオブジェクトから関数を呼び出す方法は?
- 26. jQuery;ウィジェット内の関数を呼び出す方法は?
- 27. if文(vba)内の関数を呼び出す方法
- 28. anglejsのコントローラ内でjavascript関数を呼び出す方法
- 29. コンストラクタクラスの内部関数を呼び出す方法は?
- 30. vb.netの子フォーム内でpublic関数を呼び出す方法
'this.word'の代わりに' this'を使用するだけで、コンソールはあなたがいる場所に基づいて 'this'の値が異なります。 –
その構文は私には見えます。関数をオブジェクトの一部として定義するときは、すでに名前を... 'bar'と指定しています。私は 'test'もそこにいるはずだとは思わない。何かのように: 'バー:function(){...}' – David
@David、構文は奇妙です、私は同意しますが、それは動作します:[fiddle](https://jsfiddle.net/kv6bf76n/)。 –