this

作者: 阿亮2019 | 来源:发表于2018-06-12 13:01 被阅读3次

    this指的是call的第一个参数

    <!DOCTYPE html>
    <html>
    <head>
    <script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
      <meta charset="utf-8">
      <title>JS Bin</title>
    </head>
    <body>
      <button id=xxx>click me 1</button>
      <button id=xxx2>click me 2</button>
      <ul>
        <li id=1></li>
        <li id=2></li>
        <li id=3></li>
        <li id=4></li>
        <li id=5></li>
        <li id=6></li>
      </ul>
    </body>
    </html>
    

    下面的this指的是什么?

    xxx.onclick = function () {
      console.log(this);
    }
    
    xxx2.addEventListener('click', function () {
      console.log(this);
    })
    
    $('ul').on('click', 'li', function() {
      console.log(this);
    })
    

    function X() {
      return object = {
        name: 'object',
        f1(x) {
          x.f2()
        },
        f2() {
          
        }
      }
    }
    
    var options = {
      name: 'options',
      f1() {
        
      },
      f2() {
        console.log(this);
      }
    }
    
    var x = X();
    x.f1(options); // ?
    

    小变种

    function X() {
      return object = {
        name: 'object',
        f1(x) {
          x.f2.call(this)
        },
        f2() {
          console.log(this)
        }
      }
    }
    
    var options = {
      name: 'options',
      f1() {
        
      },
      f2() {
        console.log(this);
      }
    }
    
    var x = X();
    x.f1(options); // ?
    
    function X() {
      return object = {
        name: 'object',
        options: null,
        f1(x) {
          this,options = x;
          this.f2();
        },
        f2() {
          this.options.f2.call(this); // 加上call和不加有什么区别
        }
      }
    }
    
    var options = {
      name: 'options',
      f1() {
        
      },
      f2() {
        console.log(this);
      }
    }
    
    var x = X();
    x.f1(options); // ?
    

    相关文章

      网友评论

          本文标题:this

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