改变this指针的三个方法?

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

  1. call():

    • 使用 `call()` 可以直接改变 `this` 的指向。
    • 它接受两个参数:第一个是要调用的目标函数,第二个是将作为 `this` 的值的对象或对象引用的数组。
    • 例如,使用 `call()` 和 `Person` 作为 `this` 的对象,可以这样调用 `fn()`:`fn.call(Person, "hh", 20)`。
  2. apply():

    • `apply()` 与 `call()` 非常相似,但它接收的是一个包含要调用函数及其参数的二维数组。
    • 例如,`fn.apply(Person, ["hh", 20])` 会将 `Person` 作为 `this`,并将其与 "hh" 和 20 结合在一起作为参数调用 `fn()`。
  3. bind():

    • `bind()` 允许开发者创建一个新的函数,并将 `this` 的指向固定到指定的对象上。
    • 这个新的函数可以通过 `.bind()` 构造函数或者 `.apply()` 和 `.call()` 来调用。
    • 如果不需要指定 `this` 的对象,可以使用 `.bind()` 直接返回一个新的函数,之后需要使用 `.apply()` 或 `.call()` 来调用这个新函数。
    • 例如,`fn.bind(Person)('hh', 20)` 会创建一个新函数,其 `this` 为 `Person`,并将其与 "hh" 和 20 结合在一起作为参数调用 `fn()`。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/656402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

protobuf-go pragma.go 文件介绍

pragma.go 文件 文件位于: https://github.com/protocolbuffers/protobuf-go/blob/master/internal/pragma/pragma.go 该文件核心思想: 利用 Golang 语法机制,扩展 Golang 语言特性 目前,该文件提供以下 4 个功能: …

C++STL模板库

类&#xff1a; pair: 头文件&#xff1a;<utility> 定义&#xff1a; 是一个标准库类型。可以看作是有两个成员变量first和second的结构体&#xff0c;并且重载了<运算符(先比较first大小&#xff0c;再比较second大小)当我们创建一个pair时&#xff0c;必须提供两…

SQLite 简介

什么是SQLite&#xff1f; SQLite是一个轻量级的嵌入式关系型数据库&#xff0c;它以一个小型的C语言库的形式存在。它的设计目标是嵌入式的&#xff0c;而且已经在很多嵌入式产品中使用了它&#xff0c;它占用资源非常的低&#xff0c;在嵌入式设备中&#xff0c;可能只需要几…

机器学习面试题总结60-99

目录 60、Python到底是什么样的语言? 61.Python是如何进行内存管理的? 引用计数和垃圾回收。

leetcode-存在重复元素

217. 存在重复元素 把列表转成集合&#xff0c;我们知道集合中是没有重复元素的&#xff0c;然后和原列表的长度做对比&#xff0c;不相等说明是有重复元素的 class Solution:def containsDuplicate(self, nums: List[int]) -> bool:if len(set(nums)) len(nums):return …

状态码400以及状态码415

首先检查前端传递的参数是放在header里边还是放在body里边。 此图前端传参post请求&#xff0c;定义为’Content-Type’&#xff1a;‘application/x-www-form-urlencoded’ 此刻他的参数在FormData中。看下图 后端接参数应为&#xff08;此刻参数前边什么都不加默认为requestP…

Qt QScrollArea 不显示滚动条 不滚动

使用QScrollArea时&#xff0c;发现添加的控件超出QScrollArea 并没有显示&#xff0c;且没有滚动条效果 原因是 scrollArea指的是scrollArea控件本身的大小&#xff0c;肉眼能看到的外形尺寸。 scrollAreaWidgetContents指的是scrollArea控件内部的显示区域&#xff0c;里面可…

2024 高级前端面试题之 React 「精选篇」

该内容主要整理关于 React 模块的相关面试题&#xff0c;其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 React模块精选篇 1. 如何理解React State不可变性的原则2. JSX本质3. React合成事件机制4. setState和batchUpdate机制5. 组件渲染和更新过程6. Diff算法相…

windows server 开启远程连接RDP连接

windows server 开启远程连接&#xff0c;RDP连接windows server 打开gpedit.msc, 找到计算机配置-管理模板-windows组件-远程桌面服务-远程桌面会话主机-授权 1 使用指定的远程桌面许可证服务器 2 设置远程桌面授权模式 3 重启windows server服务器生效 4使用mstsc命令连接…

未来每家公司都需要有自己的大模型- Hugging Face创始人分享

自ChatGPT发布以来&#xff0c;有人称其是统治性一切的模型。Hugging Face创始人兼首席执行官Clem Delangue介绍&#xff0c;Hugging Face平台已经有15000家公司分享了25万个开源模型&#xff0c;当然这些公司不会为了训练模型而训练模型&#xff0c;因为训练模型需要投入大量资…

Springboot自定义线程池实现多线程任务

1. 在启动类添加EnableAsync注解 2.自定义线程池 package com.bt.springboot.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTask…

记录 | ubuntu nm命令的基本使用

什么是nm命令 nm命令是linux下针对某些特定文件的分析工具&#xff0c;能够列出库文件&#xff08;.a、.lib&#xff09;、目标文件&#xff08;*.o&#xff09;、可执行文件的符号表。 nm命令的常用参数 -A 或 -o 或 --print-file-name&#xff1a;打印出每个符号属于的文件…

webassembly003 TTS BARK.CPP

TTS task TTS&#xff08;Text-to-Speech&#xff09;任务是一种自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;其中模型的目标是将输入的文本转换为声音&#xff0c;实现自动语音合成。具体来说&#xff0c;模型需要理解输入的文本并生成对应的语音输出&#xff0…

Mysql 为表增加计算列

什么叫计算列呢&#xff1f;简单来说就是某一列的值是通过别的列计算得来的。 增加计算列的语法格式如下&#xff1a; col_name data_type [GENERATED ALWAYS] AS (expression) [VIRTUAL | STORED] [UNIQUE [KEY]] [COMMENT comment] [NOT NULL | NULL] [[PRIMARY] KEY]; 下…

c++学习记录 多态—案例2—电脑组装

#include<iostream> using namespace std;//抽象不同的零件//抽象的cpu类 class Cpu { public://抽象的计算函数virtual void calculate() 0; };//抽象的显卡类 class VideoCard { public://抽象的显示函数virtual void display() 0; };//抽象的内存条类 class Memory …

华为通用软件开发工程师24校招三轮面试详细记录

本文介绍2024届秋招中&#xff0c;华为技术有限公司的通用软件开发工程师岗位的3场面试基本情况、提问问题等。 7月投递了华为技术有限公司的通用软件开发工程师岗位&#xff0c;所在部门为海思半导体与器件业务部。目前完成了一面、二面与三面等全部流程&#xff0c;在这里记录…

K210 UART串口通信介绍与 STM32通信

目录 K210-UART串口通信相关函数&#xff1a; 使用K210串口的时候需要映射引脚&#xff1a; K210与STM32串口通信 发送单字节&#xff1a; K210端 STM32端 发送数据包 K210端 STM32端 K210的UART模块支持全双工通信&#xff0c;可以同时进行数据的发送和接收。在K21…

Nginx启用WebSocket支持

报错内容nginx.conf proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 问题解决WebSocket跨域 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Credentials true;

常用芯片学习——AMS1117芯片

AMS1117 1A 低压差线性稳压器 使用说明 AMS1117 是一款低压差线性稳压电路&#xff0c;该电路输出电流能力为1A。该系列电路包含固定输出电压版本和可调输出电压版本&#xff0c;其输出电压精度为士1.5%。为了保证芯片和电源系统的稳定性&#xff0c;XBLWAMS1117 内置热保护和…

对鸢尾花进行分类预测-----pycharm

项目说明 #项目&#xff1a; 对鸢尾花进行分类预测 #实例数量150个(3类各50个) #属性数量&#xff1a;4(数值型&#xff0c;数值型&#xff0c;帮助预测的属性和类) #特征&#xff1a;花萼长度&#xff0c;花萼宽度&#xff0c;花瓣长度&#xff0c;花瓣宽度 单位&#xff1…