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の文法と役割と
特殊な場合、callの場合、applyまたはbindの着信の最初のパラメータ値は
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)を指します.