Js中的this是什么
创始人
2024-12-16 12:43:36
0次

  this 是什么

  理解this之前, 先纠正一个观点,this 既不指向函数自身,也不指函数的词法作用域。如果仅通过this的英文解释,太容易产生误导了。它实际是在函数被调用时才发生的绑定,也就是说this具体指向什么,取决于你是怎么调用的函数。也就是说谁调用的this,this就指向谁。

  1.纯粹的函数调用

  这是函数的最通常用法,属于全局性调用,因此this就代表全局对象。请看下面这段代码,它的运行结果是1。

  来看这段代码:

  var a = 2; function fun() {

  }

  console.log( this.a );

  fun();

  此时的打印结果是2。

  因为fun()是直接调用的(独立函数调用),没有应用其他的绑定规则,这里进行了默认绑定,将全局对象绑定this上,所以this.a 就解析成了全局变量中的a,即2。此时的this相当于Window。

  调用函数实质是window调用test方法,所以函数体内的this指向的是window。

  2.作为对象方法的调用

  函数还可以作为某个对象的方法调用,这时this就指这个上级对象。

  function test() {

  console.log(this.x);

  }

  var obj = {};

  obj.x = 1;

  obj.m = test;

  obj.m();

  此时打印结果为1;this相当于obj对象。

  此时的test函数被用作了object对象的方法来调用,所以test里的this指向object。

  3.作为构造函数调用

  所谓构造函数,就是通过这个函数,可以生成一个新对象。这时,this就指这个新对象。

  function test() {

  this.x = 1;

  }

  var obj = new test();

  4.call/apply 改变this的指向

  function Person(name,age){

  this.name = name;

  this.age = age

  }

  var person=new Person("xu",18);

  var obj = {}

  Person.call(obj,"liu",20)

  通过在控制台打印我们可以看出,this现在指的是obj对象,所以说call可以改变this的指向。

  call与apply的不同在于传值时是以数组的方式:

  Person.apply(obj,["liu",20] )

  Apply() 是函数的一个方法,作用是改变函数调用的对象。它的第一个参数就表示改变后的调用这个函数的对象。因此,这是的this指的就是这第一个参数。

  总结

  1. 通常在函数中的this指向的是调用函数的哪个对象(谁调用指向谁)。

  2. 事件函数中的this通常指向的是事件前的对象。

  3. 构造函数中的this,(使用new调用构造函数创建对象),通常指向的是new所创建出来的对象本身。

  4. 全局范围的this通常指向的是全局对象(浏览器中是window)。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...