window.color ='red'var o ={
color:'blue'}functionsayColor(){
alert(this.color)}var objectSayColor =sayColor.bind(o)objectSayColor()//blue
呼び出し、適用、バインドの違い
埋め込む:
call/apply は、関数の this コンテキストを変更した直後に関数を実行します。
バインドはコンテキストを変更した後に関数を返し、関数を実行しません。
functionadd(a, b){
return a + b
}functionsub(a, b){
return a - b
}add.bind(sub,5,3)// 这时,并不会返回 8add.bind(sub,5,3)()// 调用后,返回 8
戻り値:
call、applyはfunの実行結果を返します
bind は fun のコピーを返し、fun の this ポインタを指定して、fun のパラメータを保存します。
呼び出し、適用、バインドの中心的な概念
上記の簡単な例から、call、apply、bind が他のオブジェクトからメソッドを借用していることがわかります。オブジェクト A にはメソッドがあり、オブジェクト B も何らかの理由で同じメソッドを使用する必要があります。このとき、次のようにすることができます。 B 借用します。オブジェクト A のメソッドは目的を達成するだけでなく、メモリも節約します。