账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于js this指向的一个问题
    49
    0
    var a={
        name:"xuxu",
        getname:function(){
            console.log(this);
            var b=function(){
                console.log(this);
            }
            b();
            console.log(Window);
        }
    }
    a.getname();

    以上代码中,getname中的this是指向a的我能理解,但是它里面的b函数中的this指向window是怎么理解呢,为什么b函数是由window调用呢
    当函数不作为对象的属性被调用时,也就是我们常说的普通函数方式,此时的this总是指向全局对象 也就是说一个对象的属性是一个函数,如果这个函数由这个对象调用,那么这个函数里面的this是指向这个对象的,但是这个函数内部的函数,是按上面这句话执行的,因为b函数不是直接当做a的属性调用的,它是普通调用因此默认指向window

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 錵開や落幕 普通会员 1楼

      在JavaScript中,this关键字是一个特殊的变量,它代表了当前作用域的上下文对象。在函数内部,this的值是当前函数自身。在对象方法中,this的值是当前对象。在全局作用域中,this的值是window对象。

      关于 this 指向的一个问题,可以分为以下几个情况:

      1. 父级作用域:在函数定义内部,this的值会取决于定义它的作用域。如果在函数外部定义了一个函数,那么函数内部的this值就是这个外部函数。如果在函数内部定义了一个对象,那么这个对象的this值就是这个内部函数。

      ```javascript var parent = { child: function() { console.log(this); } };

      parent.child(); // 输出:window ```

      1. 全局作用域:在全局作用域中,this的值是window对象。

      ```javascript window.parent = { child: function() { console.log(this); } };

      parent.child(); // 输出:window ```

      1. 多层嵌套函数:如果在一个函数内部定义了一个函数,那么这个函数的this值就是这个内部函数。

      ```javascript function parent() { this.sub = function() { console.log(this); } }

      parent.sub(); // 输出:this.sub ```

      1. new运算符:如果使用new关键字创建一个对象,那么这个对象的this值就是这个new对象。

      javascript var newObj = new Object(); newObj.myMethod(); // 输出:this.myMethod

      以上就是在JavaScript中关于this指向的一个问题。

    • 少女心事 普通会员 2楼

      在JavaScript中,this关键字是一个特殊的变量,它代表了当前作用域的上下文对象。在函数内部,this的值是当前函数自身。在对象方法中,this的值是当前对象。在全局作用域中,this的值是window对象。

      关于 this 指向的一个问题,可以分为以下几个情况:

      1. 父级作用域:在函数定义内部,this的值会取决于定义它的作用域。如果在函数外部定义了一个函数,那么函数内部的this值就是这个外部函数。如果在函数内部定义了一个对象,那么这个对象的this值就是这个内部函数。

      ```javascript var parent = { child: function() { console.log(this); } };

      parent.child(); // 输出:window ```

      1. 全局作用域:在全局作用域中,this的值是window对象。

      ```javascript window.parent = { child: function() { console.log(this); } };

      parent.child(); // 输出:window ```

      1. 多层嵌套函数:如果在一个函数内部定义了一个函数,那么这个函数的this值就是这个内部函数。

      ```javascript function parent() { this.sub = function() { console.log(this); } }

      parent.sub(); // 输出:this.sub ```

      1. new运算符:如果使用new关键字创建一个对象,那么这个对象的this值就是这个new对象。

      javascript var newObj = new Object(); newObj.myMethod(); // 输出:this.myMethod

      以上就是在JavaScript中关于this指向的一个问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部