es6 bind this
语法
fun.bind(this,arg1,arg2,…)
bind()方法会创建一个新的函数,称为绑定函数,fun方法在this环境下调用
this.a = 1;
var module = {
a : 2,
getA:function() {
return this.a;
}
};
module.getA();//2
var getA1 = module.getA;
// getA在外部调用,此时的this指向了全局对象
getA1();//1
// 再把getA1方法绑定到module环境上
var getA2 = getA1.bind(module);
getA2();
从上面的例子可以看出,为什么要创建绑定函数,就是当我们调用某些函数的时候是要在特定环境下才能调用到,所以我们就要把函数放在特定环境下,就是使用bind把函数绑定到特定的所需的环境下。
var foo = {
x: 3
}
var bar = function(){
console.log(this.x);
}
bar();
// undefined
var boundFunc = bar.bind(foo);
boundFunc();
// 3
将bar方法和foo对象绑定后,bar中的this对象被替换为了foo,并生成了一个新的函数boundFunc,因此在全局环境中调用boundFunc时。也能够訪问到foo对象的属性。
div的多拽
bind的做用
首先先去掉bind(this),打印下 init()函数中的this
init(){
this.oDiv.onmousedown=function(ev){
console.log(this)
}
}
this为dom元素
init(){
this.oDiv.onmousedown=function(ev){
console.log(this)
}.bind(this)
}
this为这个 class了