我们用例子来说明问题
隐式转换
var id = 10;
function a() {
console.log(this.id);
};
var obj2 = {
id: 30
}
var obj1 = {
id: 20
}
a.call(obj2);//30
a.call(obj1);//20
//a函数内的this指向随着call的指向而变化
显示转换
var id = 10;
function a() {
console.log(this.id);
};
var obj2 = {
id: 30
}
var obj1 = {
id: 20
}
//使用bind之后, 返回的函数内部this定死, 无法再改变this
var b = a.bind(obj2);//返回一个函数
b.call(obj1);//30
b();//30
new
function a() {
this.a = 1;
this.b = 2;
}
var a1 = new a();
//this指向对象