工作中关于this指向的一些问题

普通函数调用

对于each函数传递一个参数是时  两个this都指向当前元素对象   

      // const that = this;
      $("input[name='ksxl']").each(function (index) {  //遍历每个单选框
        console.log(this);
        if ($(this).prop('checked')) {
          // console.log(that);
          console.log(this);
        }
      })

工作中关于this指向的一些问题

 对于each函数传递一个参数是时   index指向当前元素下标   item指向当前元素对象   两个this都指向当前元素对象

    // const that = this;
      $("input[name='ksxl']").each(function (index,item) {  //遍历每个单选框
        console.log(this);
        if ($(this).prop('checked')) {
          // console.log(that);
          console.log(this);
          console.log(item);          
        }
      })

工作中关于this指向的一些问题

 如何改变this指向   让它指向全局页面

1.改用箭头函数调用

      // const that = this;
      $("input[name='ksxl']").each((index) => {  //遍历每个单选框
        console.log(this);
        if ($(this).prop('checked')) {
          // console.log(that);
          console.log(this);
        }
      })

注意:箭头函数内部是没有this的指向的,箭头函数中的this实际上是向外层一级一级的查找作用域中的this(直到this有定义)

结果:第一个this指向他上级    

2.用把全局this赋值给that

      const that = this;
      $("input[name='ksxl']").each(function (index) {  //遍历每个单选框
        console.log(that);
        if ($(this).prop('checked')) {
          console.log(that);
        }
      })

结果:两个that都指向全局页面

上一篇:疯狂Java讲义(十)----第二部分


下一篇:WebExperiment-04