js call()apply()bind()-this指向を変える

913 ワード

次の例を参考して区別を求める:
/* 
	 * 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