前提
javascriptの関数から、別オブジェクトのメソッドにアクセスしたい。
実現したいこと
strとオブジェクトの2つの引数を受け取るcalc関数の中で、aaaオブジェクトのmethodメソッドにアクセスしたいです。
発生している問題・エラーメッセージ
Error: obj.func is not a function
該当のソースコード
javascript
1const aaa ={ 2 name: 'aaa', 3 method: ()=>{ return 'method'} 4 } 5 6function calc(obj={str:'', func:()=>{}}){ 7 let res = obj.func() 8 9 console.log(res) 10 } 11 12calc(aaa)
試したこと
aaaオブジェクトのmethodメソッドを
method(){return 'method'}
のように書き換えたりもしましたが変わりませんでした。
こちらにて質問するのは初めてなので不足事項などありましたら申し訳ございません。
よろしくお願いします。
calc() の 引数の obj=... はどういう意図で書いてますか?
int32_t様
ありがとうございます。
strというプロパティ、funcというメソッドを持ったオブジェクトを引数として受け取る、という意図で記述しました。
> strというプロパティ、funcというメソッドを持ったオブジェクトを引数として受け取る、という意図
そのようには動きませんです。
デフォルト引数の指定なので、calc(aaa) と引数を指定して呼ぶ場合には ={...} の部分は無視されます。calc() のように引数なしで呼んだ場合に obj が {str:'', func:()=>{}} になります。
int32_t様
ありがとうございます。
typescriptを直前に学習していたので、型の指定と勘違いしていたようです。
ご回答ありがとうございました。

回答3件
あなたの回答
tips
プレビュー