美文网首页
JS中this的五种情况的综合梳理

JS中this的五种情况的综合梳理

作者: 江平路 | 来源:发表于2020-08-26 21:44 被阅读0次

    一、纯粹的函数调用

    函数最普通用法,此时属于全局调用,函数内this指向全局对象window。

    var x=20;
    function test(){
          var x = 10;
          console.log(this.x)
    }
    

    输出:20,因为函数test执行环境为window。

    var x=20;
     function test(){
          this. x = 10;
          console.log(this.x)
    }
    test()
    console.log(x);
    

    输出:10,由于test函数内部this指向window,所以第3行代码修改了x的值。

    二、作为对象的方法使用

    函数作为某个对象的方法,此时this指向该对象。

    function text(){
    console.log(this.x)
    }
    var obj = {};
    obj.x = 10;
    obj.out = text;
    obj.out()//10
    

    三、构造函数生成实例对象

    作为构造函数使用时,this指向该对象新创建的实例。

    var x = 2;
    function text(){
    this.x =1;
    }
    var inst = new text();
    console.log(inst.x);//1
    

    四、使用apply、call、bind

    apply(),call()方法是改变函数内部this的值,若为空默认是指向全局对象window。

    var x = 2; 
    function test(){ 
      console.log (this.x); 
    } 
    var obj={}; 
    obj.x = 1; 
    obj.m = test;  
    obj.m.apply();//2,默认指向window
    obj.m .apply (obj);//1,this指向obj
    

    五、事件处理程序中的this

    在DOM级事件处理程序中this指向触发事件的元素,而对于IE事件来说,this指向全局对象window。

    HTML:
    <input id="myinput" type="text" value="javascript中onclick中的this" onclick=" test(this);"/>
    javaScript:
    function test(obj){ 
    alert(obj); //[object HTMLInputElement] 
    alert(obj.id); //myinput 
    alert(obj.value); //javascript中onclick中的this 
    }
    

    相关文章

      网友评论

          本文标题:JS中this的五种情况的综合梳理

          本文链接:https://www.haomeiwen.com/subject/ojlyjktx.html