Javascriptのapply、call、bindを深く浅くする
4487 ワード
apply、callの違い
apply,callの両方にとって,役割はまったく同じであるが,パラメータを受け入れる方法は異なる.たとえば、次のように定義されている関数があります.
次のように呼び出すことができます.
この中でthisはあなたが指定したいコンテキストで、彼はどのJavaScriptオブジェクト(JavaScriptのすべてのオブジェクト)でもよく、callはパラメータを順番に渡す必要がありますが、applyはパラメータを配列に入れます.
JavaScriptでは、ある関数のパラメータ数は固定されていないので、適用条件といえば、パラメータが数を明確に知っている場合にcallを使います.不確定な場合はapplyを用い,パラメータpushを配列に伝達する.パラメータの数が不確定である場合、関数内部はargumentsという擬似配列によってすべてのパラメータを遍歴することもできる.
apply、call、bind比較
ではapply、call、bindの3つを比較すると、どのような違いがあるのでしょうか.apply、call、bindはいつ使いますか.シンプルな栗:
3つの出力は81ですが、bind()メソッドを使用していることに注意してください.彼の後ろには括弧が多くなっています.
すなわち、コンテキスト環境を変更した後、直ちに実行するのではなく、コールバック実行を望む場合はbind()メソッドを使用します.apply/callはすぐに関数を実行します.
さらにまとめてみます. apply、call、bindの3つは、関数を変更するために使用されるthisオブジェクトの指向である. apply、call、bindの3つの最初のパラメータは、thisが指すオブジェクト、すなわち指定したいコンテキストです. bindは対応する関数を返し、後で呼び出すのに便利である.apply、callは即時呼び出しです.
apply,callの両方にとって,役割はまったく同じであるが,パラメータを受け入れる方法は異なる.たとえば、次のように定義されている関数があります.
var func = function(arg1, arg2) {
};
次のように呼び出すことができます.
func.call(this, arg1, arg2);
func.apply(this, [arg1, arg2]);
この中でthisはあなたが指定したいコンテキストで、彼はどのJavaScriptオブジェクト(JavaScriptのすべてのオブジェクト)でもよく、callはパラメータを順番に渡す必要がありますが、applyはパラメータを配列に入れます.
JavaScriptでは、ある関数のパラメータ数は固定されていないので、適用条件といえば、パラメータが数を明確に知っている場合にcallを使います.不確定な場合はapplyを用い,パラメータpushを配列に伝達する.パラメータの数が不確定である場合、関数内部はargumentsという擬似配列によってすべてのパラメータを遍歴することもできる.
apply、call、bind比較
ではapply、call、bindの3つを比較すると、どのような違いがあるのでしょうか.apply、call、bindはいつ使いますか.シンプルな栗:
var obj = {
x: 81,
};
var foo = {
getX: function() {
return this.x;
}
}
console.log(foo.getX.bind(obj)()); //81
console.log(foo.getX.call(obj)); //81
console.log(foo.getX.apply(obj)); //81
3つの出力は81ですが、bind()メソッドを使用していることに注意してください.彼の後ろには括弧が多くなっています.
すなわち、コンテキスト環境を変更した後、直ちに実行するのではなく、コールバック実行を望む場合はbind()メソッドを使用します.apply/callはすぐに関数を実行します.
さらにまとめてみます.