当前位置: 首页 > news >正文

js this

在JavaScript中,callapplybindFunction对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向。

bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

一、call

call()
语法:

call([thisObj[,arg1[, arg2[, [,.argN]]]]])

定义:调用一个对象的一个方法,以另一个对象替换当前对象。

说明: call 方法可以用来代替另一个对象调用一个方法。
call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。

thisObj的取值有以下4种情况:
(1) 不传,或者传null,undefined, 函数中的this指向window对象
(2) 传递另一个函数的函数名,函数中的this指向这个函数的引用
(3) 传递字符串、数值或布尔类型等基础类型,函数中的this指向其对应的包装对象,如 String、Number、Boolean
(4) 传递一个对象,函数中的this指向这个对象

 

二、apply()

语法:apply([thisObj[,argArray]])

定义:应用某一对象的一个方法,用另一个对象替换当前对象。

说明:
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

call 和 apply的区别
对于 apply、call 二者而言,作用完全一样,只是接受参数的方式不太一样。

 

三、bind
bind是在EcmaScript5中扩展的方法(IE6,7,8不支持)
bind() 方法与 apply 和 call 很相似,也是可以改变函数体内 this 的指向。

  MDN的解释是:bind()方法会创建一个新函数,称为绑定函数,当调用这个绑定函数时,绑定函数会以创建它时传入 bind()方法的第一个参数作为 this,传入 bind() 方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数。

 

总结

  • apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;
  • apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;
  • apply 、 call 、bind 三者都可以利用后续参数传参;
  • bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

转载于:https://www.cnblogs.com/1032473245jing/p/9939681.html

相关文章:

  • $NOIp2018$劝退记
  • 汇编语言实验一
  • 深入理解java虚拟机(六)字节码指令简介
  • 蛇形矩阵
  • oracle查看执行最慢与查询次数最多的sql语句
  • js轮播
  • 指针函数与函数指针的区别
  • IntelliJ IDEA 配置JDK
  • Jmeter (八) 脚本增强_事物
  • 为django项目配置celery的后台启动
  • 用Python表达对Android的想法
  • vue页面与状态机,一些设想与实践
  • KVM web管理工具——WebVirtMgr(一)
  • 关于字符串格式化
  • 在小程序中打开普通二维码
  • Android交互
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • nodejs:开发并发布一个nodejs包
  • Puppeteer:浏览器控制器
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • TCP拥塞控制
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 构建二叉树进行数值数组的去重及优化
  • 记一次和乔布斯合作最难忘的经历
  • 前端技术周刊 2019-02-11 Serverless
  • 如何设计一个微型分布式架构?
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 使用 @font-face
  • 最近的计划
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​渐进式Web应用PWA的未来
  • $forceUpdate()函数
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (2)nginx 安装、启停
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .form文件_一篇文章学会文件上传
  • .Net Core和.Net Standard直观理解
  • .net core控制台应用程序初识
  • .NET上SQLite的连接
  • @基于大模型的旅游路线推荐方案
  • @我的前任是个极品 微博分析
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [.net] 如何在mail的加入正文显示图片
  • [20160902]rm -rf的惨案.txt
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [Android Pro] AndroidX重构和映射
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [CF482B]Interesting Array
  • [dts]Device Tree机制
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream