this指向

this

解析器在调用函数时,每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是 this,this指向的是一个对象,这个对象我们称为函数执行的上下文对象。

函数内this的指向

我们都知道,函数的调用有六种形式。

根据函数的调用方式的不同,this会指向不同的对象:

-1.以函数的形式(包括普通函数、定时器函数、立即执行函数)调用时,this的指向永远都是window。比如fun();相当于window.fun();

-2.以方法的形式调用时,this指向调用方法的那个对象

-3.以构造函数的形式调用时,this指向实例对象

-4.以事件绑定函数的形式调用时,this指向绑定事件的对象

-5.使用call和apply调用时,this指向指定的那个对象

function fun(){
    console.log(this);
    console.long(this.name);
}

var obj1 = {
    name:'smyh',
    sayName:fun
};

var obj2 = {
    name:'vso',
    sayName:fun
};

var name = '全局name属性';

fun();

打印结果:

window
全局name属性

 上面的举例可以看出,this指向的是window对象,所以this。name指的是全局的name。

function fun(){
      console.log(this);
      console.log(this.name);
}

var obj1 = {
       name:'smyh',
       sayName:'fun'
};

var obj2 = {
      name:'cad',
      sayName:'fun'
};

var name = '全局name属性';

obj2.sayName();

打印结果:

Object
cad

上面的举例可以看出,this指向的对象是obj2,所以this.name指的是obj2.name。

箭头函数中this的指向

ES6中的箭头函数并不会使用上面的准则,而是会继承外层函数调用的this绑定(无论this绑定到什么)。

改变函数内部的 this指向

JS专门为我们提供了一些方法来改变函数内部的this指向。如:call()、apply()、bind()方法。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值