JavaScript中的this

this是JavaScript语言中的一个关键字,指代在函数运行时生成的一个内部对象,this只能在函数内部被调用。
由于函数的运行场景不同,this的指向也是不同的,但总体上就是谁调用了这个函数,this的指向就是谁。
例如:`obj.sayHello()`
这里的this指向就是obj这个对象。
以下总结几种this的指向情况:    
1、当一个函数自执行时,this是指向全局对象的,即window对象。
```
function Person() {
    this.name = 'ice';
    console.log(this);
}
``
2、全局作用域中的this是指向window的。
```
var name = 'ice';
function sayName() {
    console.log(this.name);
}
sayName();
```
3、调用call/apply方法可以改变this的指向。

```
var obj = {
    name: 'ice',
    age: 18,
    sex: 'male'
}
function sayHello() {
    console.log(this);
}
sayHello.call(obj);//此时函数内部的this是指向obj的
sayHello.apply(obj, arguments);
```
4、当一个对象调用这个函数时,函数内部的this是指向这个对象的。
```
var name = '222';
var a = {
    name : '111',
    say : function() {
        document.write(this.name);
    }
 }
 var fun = a.say;
 fun();
 a.say();
 var b = {
    name : '333',
    say : function (fun) {
        fun();
    }
 }
 b.say(a.say);//取a.say的函数体,不等于a.say()执行
 b.say = a.say;
 b.say();
 //依次会输出222111222333
```
5、构造函数内部的this。此时的this指向由这个构造函数生成的新对象。
```
function Person(name) {
    this.name = name;
}
var person = new Person('ice');
console.log(person.name);
```
随着es6语法的普及,新特性箭头函数避免了很多因为this指向问题而产生的坑,在箭头函数中this永远指向函数定义时的环境,而不是函数执行时的环境,但有时this的使用也为我们的开发带来了方便。所以还是要好好去理解的~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值