改变this指向的三种方式

简介: 改变this指向的三种方式

这周想分享一下我之前考核不知道的一个知识点,即改变this指向的三种方式:

1.call()方法

function.call(thisArg, 参数1, 参数2, 参数3…)

function: 要改变this指向的原函数

thisArg: 要改变到的this指向的目标对象

function fun (name) {
  this.name = name
  console.log(this)
}
var obj = {
  name: 'dpn',
  b: function () {
  console.log(this.name)
  }
}
fun.call(obj, 'dulin') 
//把fun函数的this指向改变到obj函数,改变的name是obj中的name
this输出obj对象,并且name改变为'dulin'

2.apply()方法

function.apply(thisArg, [参数1, 参数2, 参数3…])

function: 要改变this指向的原函数

thisArg: 要改变到的this指向的目标对象

function fun (name) {
  this.name = name
  console.log(this)
}
var obj = {
  name: 'dpn',
  b: function () {
  console.log(this.name)
  }
}
fun.apply(obj, ['dulin'])
//把fun函数的this指向改变到obj函数,改变的name是obj中的name
this输出obj对象,并且name改变为'dulin'

3.bind()方法

funtion.bind(thisArg, 参数1, 参数2, 参数3…)

function: 要改变this指向的原函数

thisArg: 要改变到的this指向的目标对象

该方法并不会调用函数,仅仅改变了this指向

function fun (name) {
  this.name = name
  console.log(this)
}
var obj = {
  name: 'dpn',
  b: function () {
  console.log(this.name)
  }
}
var fun1 = fun.bind(obj, 'dulin')
fun1()
//把fun函数的this指向改变到obj函数,改变的name是obj中的name
this输出obj对象,并且name改变为'dulin'

三种方法的区别

b9618540b3064c2cbe12c3277acc58f5.png

目录
相关文章
|
6月前
|
存储 Cloud Native Linux
C++指针和引用的作用以及区别
C++指针和引用的作用以及区别
|
4天前
|
JavaScript 前端开发
this是指向的哪个全局变量,改变this指向的方法有几种
this是指向的哪个全局变量,改变this指向的方法有几种
7 0
|
4天前
|
JavaScript 前端开发
this是指向的哪个全局变量,改变this指向的方法有几种?
this是指向的哪个全局变量,改变this指向的方法有几种?
|
4天前
|
存储 Java 编译器
C 语言指针完全指南:创建、解除引用、指针与数组关系解析
创建指针 我们可以使用引用运算符 & 获取变量的内存地址:
92 0
|
4天前
|
C语言
C语言函数传递了指针,值没有被修改的原因及解决方法
C语言函数中传递了指针作为参数,确切来说是传递了指向变量的内存地址作为参数,可经过函数内的修改之后,该指针指向的变量的值为什么不会被修改?就像下方这个函数:
66 1
|
4天前
|
JavaScript 前端开发
js中this是指向的哪个全局变量,改变this指向的方法有什么
js中this是指向的哪个全局变量,改变this指向的方法有什么
22 0
|
JavaScript
努力说清this的指向和怎么改变this的指向
努力说清this的指向和怎么改变this的指向
78 0