this的指向

什么是this?

this是一个关键字,不能被当做变量去赋值;

指向:

this的指向分为全局作用域跟函数作用域

在全局中,this关键字固定指向window;

在函数中,this关键字的指向取决于函数是如何调用的;

下面举例说明:

在全局中

console.log(this);//this指向window

在函数中(直接调用)

 var fn = function(){
            console.log(this);
        }
        var obj = {
            a:1,
            b:fn
        }
        fn();//此时this指向window 
        

这里的函数是直接调用的,所以this是指向window

在函数中(对象名调用)

 var fn = function(){
            console.log(this);
        }
        var obj = {
            a:1,
            b:fn
        }
        obj.b();//此时this指向obj这个对象

这里的函数是对象名.函数调用的,所以this就指向这个对象

下面我们再来看一种情况

 var obj = {
            fn:function(){
                console.log(this);
            }
        }

        obj['fn'](); //这里的this依然是指向obj

很多人都觉得这里是直接调用函数,this应该是指向window

其实依然是通过对象.函数名()

由此可以得到总结,谁调用,this就指向谁!

为什么要用this?

来看下面这段代码

var objLiubo = {
             name:'jak',
             age:88,
             gender:'男',
             girlFriend:'100',
             sayHello:function(){
                 console.log('大家好,我是jak,我有100个女朋友');
           }
         } 

现在我要将girlfriend改成101,该怎么去改?

不用this的方式

var objLiubo = {
             name:'jak',
             age:88,
             gender:'男',
             girlFriend:'100'//在这把100改为101
             sayHello:function(){
                 console.log('大家好,我是jak,我有100个女朋友');//然后还要手动把这里的100改成101
           }
         } 

大家思考一个问题,这只是一个变量的值需要改变,这种方法不太费劲,要是一千个变量的值要修改呢?一万个呢?  那恐怕人会疯掉,所以我们调用this关键字解决。

this的方式

var jak = {
            name:'jak',
            age:88,
            gender:'男',
            girlFriend:'100',//只需要改一下这个变量的值
            sayHello:function(){
                console.log(`大家好,我叫jak,我有${this.girlFriend}个女朋友`);//将100用this改成一个变量得形式
            }
        } 

这样只需要改一下变量的值,里面的输出语句的值也会随之改变。也就不会这样麻烦了!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值