看代码和注释:
class MyClass{
constructor(){
this.name="NAME";
}
callback(){
console.log(this.name);
}
do(){
//可以正常输出NAME
this.callback();
//也可以正常输出NAME
let doback = this.callback.bind(this);
doback();
//报错,在函数赋值后this上下文关系丢失
doback = this.callback;
doback();
}
}
let obj = new MyClass();
obj.do();
由此可知,如果将类的方法赋值给一个变量,或者作为参数传给使用方,这方法内的this将失去上下文环境。