JavaScript中,this指针总结

303 阅读2分钟

this指针

this指针与函数的调用有关。当一个函数被调用时,除了之前函数声明时定义的形式参数,该函数还接收两个附加的参数:this和arguments。而参数this的值取决于函数调用的模式,在JavaScript中一共有四种调用模式:方法调用模式,函数调用模式,构造器调用模式和apply调用模式。不同的调用模式,this所绑定的值不同。

  • 1.方法调用模式 当一个函数被保存为一个对象的属性时,我门称它为一个方法。当这个方法被调用时,this被绑定到该对象。通俗的讲就是,如果一个函数是在对象里面的且作为一个属性,和调用它时使用点表达式(类似于myObject.myFunction()),那么我们就可以把它当做一个方法来调用。例子如下:

屏幕截图 2021-11-09 184802.png

  • 2.函数调用模式 当一个函数并非一个对象的属性时,那么它就是被当做一个函数来调用的。当这个函数被调用时,this绑定到全局对象。函数调用如myFunction()例子如下:

屏幕截图 2021-11-09 184909.png

  • 3.构造器调用模式 如果在一个函数前面带上new来调用,那么背地里将会创建一个连接到该函数的prototype成员的新对象,同时this会绑定到那个新对象上。并且这个函数也被称为构造器函数(约定首字母大写,如Myfunction)例子如下:

屏幕截图 2021-11-09 185034.png

  • 4.apply调用模式 在JavaScript中,函数也是对象,所有函数对象都拥有两个方法:apply和call,这两个方法可以让我们构建一个参数数组传递给调用函数。它也允许我们选择this的值,方法第一个接收的值即为绑定给this的值。例子如下:

屏幕截图 2021-11-09 185130.png

  • 5.拓展,手写new,使用函数myNew代替new

屏幕截图 2021-11-09 205526.png

  • 总结 看完上面所述,我相信你一定对指针有了大概的了解。但实际往往是复杂的,我们还是要不断地学习,查漏补缺。共勉!