欢迎光临散文网 会员登陆 & 注册

千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip

2023-07-19 18:19 作者:bili_74601223326  | 我要投稿

一.this关键字的解读

  1.每一个函数内部都有一个关键字是this ,可以让我们直接使用的

2.函数内部的 this 指向谁,取决于函数的调用方式

  3.函数内部的 this 只和函数的调用方式有关系,和函数的定义方式没有关系

 

  普通函数 - this - window

  自执行函数 - this  - window

  定时器 - this - window

  函数表达式 - this - window

  事件处理函数 - this - 触发事件的元素对象

  对象里面的函数(方法)  - this  - 当前调用方法的对象


  function fn() {//普通函数

    console.log(this);

  }


  function fn () {

    console.log(this);

  }


  fn();//window

  window.fn();//window

  document.onclick = fn;//事件来调用 document


  fn();

  window.fn();

  document.noclick = fn;


  var fn = function () {

    console.log(this);//window

  }

  fn();


  var fn = function () {

    console.log(this);

  }


  window.setTimeout(function () {

    console.log(this);//window

  }, 1000);


  var obj = {

    name: 'zhangsan',

    showname: function () {

      console.log(this);//this->obj

      console.log(this.name);//zhangsan

    }

  }

  obj.showname();



var obj = {

  name: 'zhangsan',

  showname: function () {

    console.log(this);

    console.log(this.name);

}

}

obj.showname();


  !function () {

    console.log(this);//window

  }();


  var obj1 = {

    name: 'zhangsan',

    obj2: {

      age: 19,

      show: function () {

        console.log(this);//this->obj2

        console.log(this.name);//undefined

      }

    }

  }

  obj1.obj2.show();


 

!function () {

  console.log(this);

}();


var obj1 = {

  name: 'zhangsan',

  obj2: {

    age: 19,

    show: function () {

      console.log(this);

      console.log(this.name);

    }

  }

}

obj1.obj2.show();


var obj1 = {

  name: 'zhangsan',

  obj2: {

    age:19,

    show: function () {

      console.log(this);

      console.log(this.name);

    }

  }

}

obj1.obj2.show();

总结:谁调用了函数,函数内部的this指向谁,如果函数前面没有对象调用,默认指向window

  二.函数也是window的方法,var声明变量也是window的属性(很多时候window可以省略)

  function fn(m, n) {

    console.log(m + n);

  }

  fn(1, 2);//3

  window.fn(3, 4)//7


  var num = 1;

  console.log(num);//1

  console.log(window.num);//1

  console.log(num === window.num);//true


  function fn(m, n) {

    console.log(m + n);

  }

  fn(1, 2 );

window.fn(3,4)


var num = 1;

console.log(num);

console.log(window.num);

console.log(num === window.num);


  三.this的应用

  var liEles = document.querySelectorAll('li');

  for (var i = 0; i < liEles.length; i++) {//循环的目的是给每一个li元素添加事件

    liEles[i].onclick = function () {//点击事件,说明循环已经结束了

      // console.log(i);//循环的最后一次值

      // this:谁调用函数this指向谁

      // console.log(this);//指向当前点击的li元素

      // console.log(this.innerHTML);

    }

  }


  var liEles = document.querySelectorAll('li');

  for (var i = 0; i < liEles.length; i++) {//循环的目的是给每一个li元素添加事件

    liEles[i].onclick = function () {//点击事件, 说明循环已经结束了

      console.log(i);//循环的最后一次值

      // this:谁调用函数this指向谁

      console.log(this);//指向当前点击的li元素

      console.log(this.innerHTML);

    }

  }

  四.总结this的特点

  1.只要出现的function(函数),里面就可以存在this。

  2.this不看声明,看调用,谁调用函数,函数里面的this指向谁。


四.总结this的特点

1.只要出现的function(函数), 里面就可以存在this。

2.this不看声明,看调用,谁调用函数,函数里面的this指向谁。

千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip的评论 (共 条)

分享到微博请遵守国家法律