私は関数を持っmyfunc
てbind
いて、特定this
の引数と他の引数をbind
パラメーターリストではなく単一の配列として使用したい(このコードが実行される関数の引数としてパラメーターリストを取得するため)。その目的のために、次のようapply
に onを使用しbind
ます。
var myfunc = function(arg1, arg2){
alert("this = " + this + ", arg1 = " + arg1 + ", arg2 = " + arg2);
}
var bindedMyfunc = myfunc.bind.apply("mythis", ["param1", "param2"]);
bindedMufunc();
これにより、 が得られUncaught TypeError: Bind must be called on a function
ます。
私は何を間違っていますか?このコードを実行すると何が起こっているのか、詳しく説明していただけますか?
回答の要約:
それ自体が関数であるbind
独自の引数を持っているようで、呼び出されます。this
たとえば、あなたが言うときmyfunc.bind(args)
、bind
'sthis
はmyfunc
です。
apply
onを呼び出すことで、誤って's this を "mythis" にbind
割り当ててしまいました。これは関数ではなく、呼び出すことはできません。bind
bind
したがって、解決策は使用することです
myfunc.bind.apply(myfunc, ["mythis"].concat(["param1", "param2"]))
また、バインドされた myfunc をすぐに呼び出したい場合は、次のように言えます。
myfunc.apply.bind(myfunc)("mythis", ["param1", "param2"])
しかし、これは私の場合には十分ではありません。なぜなら、バインドされた関数を引数として に渡す必要があるからaddEventListener
です。
助けてくれてありがとう、みんな!