JavaScriptでは、thisパラメータをバインドせずに関数に引数をバインドするにはどうすればよいですか?
例えば:
//Example function.
var c = function(a, b, c, callback) {};
//Bind values 1, 2, and 3 to a, b, and c, leave callback unbound.
var b = c.bind(null, 1, 2, 3); //How can I do this without binding scope?
関数のスコープをバインドする必要があるという副作用(たとえば、setting this= null)を回避するにはどうすればよいですか?
編集:
混乱させて申し訳ありません。引数をバインドして、後でバインドされた関数を呼び出して、元の関数を呼び出してバインドされた引数を渡した場合とまったく同じように動作させることができます。
var x = 'outside object';
var obj = {
x: 'inside object',
c: function(a, b, c, callback) {
console.log(this.x);
}
};
var b = obj.c.bind(null, 1, 2, 3);
//These should both have exact same output.
obj.c(1, 2, 3, function(){});
b(function(){});
//The following works, but I was hoping there was a better way:
var b = obj.c.bind(obj, 1, 2, 3); //Anyway to make it work without typing obj twice?
まだ混乱しているので、まだ新しいです。
ありがとう!
bind()be であることがなぜ問題があるのnullですか?FFで正常に動作するようです。
thisJavaScriptで完全にバインド解除することはできません。それは常に何かを意味します。したがって、囲み関数のthisへのバインドは、非常thisに理にかなっています。
thisか?var b = c.bind(this, 1,2,3);