bind()/call()/apply()改變執行的作用域(this指向)
阿新 • • 發佈:2019-02-06
在特定作用域中呼叫函式
- 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();