js this指向问题

js this指向问题

  • js this 指向问题
this位置指向
全局作用域下指向window
函数内函数普通调用时,this指向window
函数内xxx.函数名() this指向xxx
箭头函数内指向上级作用域的this,如果没有,继续向上查找
    <script>
//this 指向
        //this 执行上下文
        //根据执行环境的不同,this指向不同的对象
        //1.在全局作用域下,this指向window
        //2.在函数内,根据函数的调用方式不同,this 的指向也不同
        //2.1 函数的调用方法为普通调用时,this指向window。

        //例如
        var a = 10;
        function num() {
            console.log(this.a);//this指向window  //10
        }
        num();

        //2.2 函数以对象的方式调用时,xxx.fun();this的指向为xxx
        let p = {
            age: 18,
            fun: function () {
                console.log(this.age) //18
            }
        }
        p.fun()
        //2.3每个函数都有自己的this,除了箭头函数。一旦箭头函数中出现了this 会向上层作用域查找this

        var p2 = {
            familyName: 'huang',
            givenName: 'xiaoming',
            sayHello: function () {
                //此处,this指向p2
                let fullName = () => {
                    //箭头函数没有自己的this,会像上层找
                    var full = `${this.familyName} ${this.givenName}` //所以这里的this为 p2  
                    return full;
                }

                console.log(`你好,我叫${fullName()}`) //这里调用函数fullName 这里的this指向p2
            }
        }

        p2.sayHello()//this指向p2
    </script>
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值