1. 程式人生 > >this 的顯示綁定-call、apply

this 的顯示綁定-call、apply

ons app str -- 一個 num pro 類型 字符串類型

簡單的栗子:

function(){
  console.log(this.a);
}
var obj={

  a:2  

};

foo.call(obj);//2 call把foo中的this指向了obj

------------------------------註意↓ "裝箱"

當第一個參數傳入的是:字符串類型、布爾、數字類型 這個原始值會被轉換成它的對象形式

new String()

new Boolean()

new Number()

-----------------------------顯示綁定-栗子1↓

function foo(){

  console.log(this.a);

}
var obj={
  a:2
};
var bar=function(){

  foo.call(obj);

};

bar();//

setTimeout(bar,100);//
bar.call(window);//
-----------------------------顯示綁定-栗子2↓

function foo(something){//3
  console.log(this.a,something);this.a=2
  return this.a+something; //5
}
var obj={

  a:2

};

var bar=function(){
  return foo.apply(obj,arguments);  //arguments=3 foo中的this指向了obj

};
var b=bra(3);
console.log(b);//5

-----------------------------顯示綁定-栗子3---------------Function.prototye.bind↓

function foo(something){

  console.log(this.a,something);
  return this,a+something;

}

function bind(fn,obj){//輔助綁定函數

  return function(){

    return fn.apply(obj,arguments);

  }

}
var obj={

  a:2

};
var bar=bind(foo,obj);

var b=bar(3);
console.log(b);

------------------------後續詳細說call、apply的參數

this 的顯示綁定-call、apply