JavaScript改变this指向的3种方法(代码说明)

我们用例子来说明问题

隐式转换

1
2
3
4
5
6
7
8
9
10
11
12
13
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的指向而变化

显示转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

1
2
3
4
5
6
7
function a() {
this.a = 1;
this.b = 2;
}
var a1 = new a();
//this指向对象
越来越多的平台(微信公众平台,新浪微博,简书,百度打赏等)支持打赏功能,付费阅读时代越来越近,特此增加了打赏功能,支持微信打赏和支付宝打赏。坚持原创技术分享,您的支持将鼓励我继续创作!