美文网首页
JS this对象

JS this对象

作者: 壬万er | 来源:发表于2017-05-16 17:10 被阅读0次

    this 是在函数执行的过程中自动创建的一个指向一个对象的内部指针。确切的说,this并不是一个对象,而是指向一个已经存在的对象的指针,也可以认为是this就是存储了某个对象的地址

    this的指向不是固定的,会根据调用的不同,而指向不同的地方。

    this的绑定可以分为四种:

    1.默认绑定

    2.隐式绑定

    2.new 绑定

    3.显示绑定

    1、默认绑定

    当我们直接调用一个函数的时候,这个函数作用的this就是默认绑定,
    默认绑定在window中
    注意:在严格模式下("use strict"),默认绑定在undefined

    
    function foo(){
      console.log(this);
    }
    foo(); //直接调用,默认绑定 this 指代window
    

    2、隐式绑定

    使用 对象.方法() 这就是隐式绑定
    方法中的this绑定在前面的对象中

    var p  = {
      name : "asd",
      foo : function(){
        console.log(this.name)
      }
    }
    p.foo(); //this 指代的就是p
    
    ![Uploading Paste_Image_131291.png . . .]

    3.new 绑定

    this 指代将来创建的那个对象

    function Person(){
      this.name = "a";
      console.log(this.name);
    }
    var p = new Person(); //这个时候 Person中的this就是指的p
    

    4.显示绑定

    call 、apply 只有这次调用的时候this显示绑定

    var p1 = {
      name : "李四",
      age : 23,
      eat : function(){
        console.log(this.name)
      }
    }
    var p2 = {
      name : "李五",
      age : 22
    }
    p1.eat.call(p2); //this 指代p2
    //使用call的时候,第一个参数表示p1中的this的执行,后面的参数为向这个函数传的值。
    //注意一点:如果第一个参数是null,则this仍然是默认的指向。
    

    bind 会返回一个新的函数,永远绑定

    Paste_Image.png

    5.绑定丢失问题

    1. 回调函数的绑定丢失问题


      Paste_Image.png
    2. 显示 绑定传入undefined和null的时候的问题
      this就会变成默认绑定 (window)

    相关文章

      网友评论

          本文标题:JS this对象

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