改变this指针的三个方法?

简介: 改变this指针的三个方法?

要改变 `this` 的指向,JavaScript 提供了一系列的方法:

  1. call():
  • 使用 `call()` 可以直接改变 `this` 的指向。
  • 它接受两个参数:第一个是要调用的目标函数,第二个是将作为 `this` 的值的对象或对象引用的数组。
  • 例如,使用 `call()` 和 `Person` 作为 `this` 的对象,可以这样调用 `fn()`:`fn.call(Person, "hh", 20)`。
  1. apply():
  • `apply()` 与 `call()` 非常相似,但它接收的是一个包含要调用函数及其参数的二维数组。
  • 例如,`fn.apply(Person, ["hh", 20])` 会将 `Person` 作为 `this`,并将其与 "hh" 和 20 结合在一起作为参数调用 `fn()`。
  1. bind():
  • `bind()` 允许开发者创建一个新的函数,并将 `this` 的指向固定到指定的对象上。
  • 这个新的函数可以通过 `.bind()` 构造函数或者 `.apply()` 和 `.call()` 来调用。
  • 如果不需要指定 `this` 的对象,可以使用 `.bind()` 直接返回一个新的函数,之后需要使用 `.apply()` 或 `.call()` 来调用这个新函数。
  • 例如,`fn.bind(Person)('hh', 20)` 会创建一个新函数,其 `this` 为 `Person`,并将其与 "hh" 和 20 结合在一起作为参数调用 `fn()`。

以上方法的示例展示了如何通过不同的参数组合来改变 `this` 的指向。在实际编程中,根据需求选择合适的方法是非常重要的

相关文章
|
7月前
|
存储 Java C++
C++ 引用和指针:内存地址、创建方法及应用解析
C++中的引用是现有变量的别名,创建时需用`&`运算符,如`string &meal = food;`。指针存储变量的内存地址,使用`*`创建,如`string* ptr = &food;`。引用必须初始化且不可为空,而指针可初始化为空。引用在函数参数传递和提高效率时有用,指针适用于动态内存分配和复杂数据结构操作。选择使用取决于具体需求。
102 9
|
7月前
|
Java C++
This指针
This指针
47 0
|
6月前
|
数据采集 存储 编译器
this指针如何使C++成员指针可调用
本文介绍了C++中的this指针,它是一个隐藏的指针,用于在成员函数中访问对象实例的成员。文章通过代码示例阐述了this指针的工作原理,以及如何使用指向成员变量和成员函数的指针。此外,还提供了一个多线程爬虫示例,展示this指针如何使成员指针在对象实例上调用,同时利用代理IP和多线程提升爬取效率。
this指针如何使C++成员指针可调用
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
|
6月前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```
|
6月前
|
编译器 C++
this指针的特性
this指针的特性
33 0
|
6月前
类与对象\this指针
类与对象\this指针
38 0
|
7月前
|
C++ 编译器
|
7月前
|
存储 编译器 C语言
【C++】类与对象【定义、访问限定符、this指针】
【C++】类与对象【定义、访问限定符、this指针】
36 1
|
6月前
|
存储 安全 编译器
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
47 0