js call()apply()bind()-this指向を変える
913 ワード
次の例を参考して区別を求める:
call(thisは誰を指しますか?arg 1、arg 2、…) //パラメータを一つずつ転送します.
apply(thisは誰を指しますか?arg 1、arg 2...) //パラメータは行列です
ビッド(thisは誰を指しますか?) // 定義時には参照しないで呼び出したら参照してください.
bind()はよく使われています.
/*
* call() apply() bind()
*
* call() apply() this “abc”
* bind() this “abc”
*
*/
function show(a,b) {
alert(`
this:${this}
a:${a}
b:${b}
`)
}
//show.call("abc",12,5);// : abc 12 5
//show.apply("abc",[12,5]);// : abc 12 5
var cc = show.bind("abc");// ,
cc(12,5);// : abc 12 5
三者の違い:call(thisは誰を指しますか?arg 1、arg 2、…) //パラメータを一つずつ転送します.
apply(thisは誰を指しますか?arg 1、arg 2...) //パラメータは行列です
ビッド(thisは誰を指しますか?) // 定義時には参照しないで呼び出したら参照してください.
bind()はよく使われています.
var a=2;
var json = {
a:1,
show(){
//alert(this.a);// :1
setTimeout(function(){
alert(this.a);// setTimeout this window, bind() this json
}.bind(this),1000)
}
}
json.show();// :1, :2