1. 程式人生 > >bind()/call()/apply()改變執行的作用域(this指向)

bind()/call()/apply()改變執行的作用域(this指向)

在特定作用域中呼叫函式

  • apply(作用域,引數陣列或arguments)
  • call(作用域,引數1,引數2…)

建立一個函式的例項

  • bind(作用域)
    var color = 1;
    var o = {
        color:2
    };
    function s() {
        console.log(this.color);
    };
    s();//1
    s.bind(o)();//2
    s.call(o);//2
    s.apply(o);//2
var indexFun = {
        arr_str : [1,'a',
'abc','66'], mySort : function (a,b,c) { console.log(this) }, init:function(){ arr_str.sort(this.mySort.bind(indexFun));//this為indexFun arr_str.sort(this.mySort.call(indexFun));//this為indexFun arr_str.sort(this.mySort.apply(indexFun)
);//this為indexFun arr_str.sort(this.mySort);//this為window } }; indexFun.init();