四个小demo来了解Javascript中的this指向

本文通过四个小demo来了解this的指向,如有不足或错误的地方,请指教。

  • 1、 首先全局定义一个变量a=2;
    2、再定义一个对象obj,里面有属性a=2,和方法b()。
    var a = 2;
    var obj = {
        a:1,
        b:function(){
            return function(){
                console.log(this.a);
            }
        }
    }

看一下测试结果。
调用obj.b()方法,查看this指向

因为obj.b()会返回一个函数,执行代码obj.b()()相当于返回一个匿名函数,由window调用,即window调用函数,this此时指向window

  • 1、定义一个对象obj1,在b方法中使用打印this.a的值。
    var obj1 = {
        a:3,
        b:function(){
            console.log(this.a);
        }
    }

查看测试结果
查看this指向
因为调用b方法的是对象obj1,所以this指向obj1,故打印this.a就是obj1.a的值了。

  • 1、定义对象obj2
    2、在obj2里声明一个self属性,使其赋值为this
    3、通过b方法,打印self.a,查看结果
    var obj2 = {
        a:4,
        self:this,
        b:function(){
            console.log(self.a);
        }
    }

查看测试结果
this指向

结果显示,直接调用obj2.b(),发现self还是指向window,证明,this在定义的时候是指向window。

  • 1、定义对象obj3,定义属性a的值为4
    2、obj3对象中,定义方法b(),并且在b方法中,定义一个变量a = 5;
    var obj3 = {
        a:4,
        b:function(){
            var a = 5;
            console.log(this.a);
        }
    }

查看测试结果

查看this指向

结果显示,调用obj3.b(),this.a打印的是obj3.a,而不是obj3.b()方法里定义的变量a。


总结

  1. this总是指向最近调用方法的对象。
  2. this在定义的时候是指向定义此段代码的作用域
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值