es6 bind(this)

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把函数绑定到特定的所需的环境下。

https://www.cnblogs.com/xxxxBW/p/4914567.html

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对象的属性。

https://www.cnblogs.com/blfbuaa/p/7110641.html
es6 bind(this)_第1张图片

div的多拽
bind的做用
首先先去掉bind(this),打印下 init()函数中的this

init(){
	this.oDiv.onmousedown=function(ev){
		console.log(this)
    }
}

es6 bind(this)_第2张图片
this为dom元素

init(){
	this.oDiv.onmousedown=function(ev){
		console.log(this)
    }.bind(this)
}

es6 bind(this)_第3张图片
this为这个 class了

你可能感兴趣的:(javascript)