call(),appy(),bind()を理解する.

1686 ワード

三者はいずれもthisの指し示しを修正したコール(thisの指し示し、パラメータ、パラメータ、...)===https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Object/Function/call
apply(this指向、パラメータ、パラメータ)==https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Object/Function/appy
fun.bind(this、パラメータ、パラメータ、...)==https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Object/Function/bind
callの文法と役割と  apply() 方法は似ています.一つの違いがあります.  call() 方法が許容するのはパラメータリストです.  apply() 方法が許容するのは、複数のパラメータを含む配列である.
function info(){
  console.log(this.age)      
}
var person = {
  age:18 ,
  info   
}
var age = 28;
var info = person.info;
info.call(person)//18
info.apply(person)//18
info.bind(person)()//18
ここでも注意が必要です.
特殊な場合、callの場合、applyまたはbindの着信の最初のパラメータ値はundefinedまたはnullにおいて、厳密なモードにおけるthisの値は、入力された値null/undefinedである.非厳格モードでは、実際に適用されるデフォルトのバインディングルールは、thisがグローバルオブジェクト(node環境はglobal、ブラウザ環境はwindow)を指します.