首页 > 编程语言 >【javascript】call、bind、apply方法的作用和区别

【javascript】call、bind、apply方法的作用和区别

时间:2022-12-06 16:22:54浏览次数:39  
标签:指向 bind javascript 参数 apply call fn

1、call,apply,bind 相同点

  • 都是改变this的指向
  • 接收的第一个参数都是要指向的对象
  • 都可以使用第一个参数之外的其他参数传参

2、call,apply,bind 不同点

  • call,bind的传参都是一样的,多个参数依次传入的;
  • apply只有两个参数,第二个参数为数组,其余参数都放在数组中;
  • call和apply都是对函数立即执行直接调用的,而bind方法不会立即调用函数需要去引用当前函数,而是返回一个修改this后的函数。

fn.call(thisArg, arg1, arg2, arg3, ...)

 

 调用fn.call时会将fn中的this指向修改为传入的第一个参数;将后面的参数传入给fn,并立即执行函数fn。

 

apply(thisArg, [argsArr])

 

 

fn.apply的作用和call相同:修改this指向,并立即执行fn。 

区别在于传参形式不同,apply接受两个参数,第一个参数是要指向的this对象,第二个参数是一个数组,数组里面的元素会被展开传入fn,作为fn的参数


fn.bind(thisArg, arg1, arg2, arg3, ...)

 

 通过两个图的对比可以知道,fn需要调用这个fn才会执行,bind并不会立即执行fn,只会改变this的指向

以上就是call、apply、bind的区别和作用,具体需要结合实际的场景使用会更好理解!

 

标签:指向,bind,javascript,参数,apply,call,fn
From: https://www.cnblogs.com/leng12/p/16955637.html

相关文章

  • javascript手写树形结构
    constarr1=[{menuId:1,name:"系统管理1",parentMenu:null,},{menuId:2,name:"系统管理2",parentMenu:null,},{......
  • <二>bind1st和bind2nd的底层实现原理
    自己实现绑定器,代码如下#include<iostream>#include<iostream>#include<vector>#include<functional>#include<algorithm>#include<ctime>usingnamespaces......
  • JavaScript文件分片上传,断点续传
    ​前言一、SpringMVC简介1.1、SpringMVC引言为了使Spring有可插入的MVC架构,SpringFrameWork在Spring基础上开发SpringMVC框架,从而在使用Spring进行WEB开发时可以......
  • <一>bind1st和bind2nd什么时候会用到
    bind用于绑定可调用(Callable)对象(函数对象、指向函数指针、到函数引用、指向成员函数指针或指向数据成员指针)和其参数。返回值为绑定成功后的函数对象C++11中引入的fun......
  • Javascript-极速入门指南
    内容概要Javascript编程语言JS编程语言简介注释语法引入JS的多种方式结束符号变量与常量定义变量let关键字与var关键字的区别定义常量基本数据类型运算......
  • 前端-JavaScript
    1.JS简介1.全称JavaScript,但是与Java一点关系都没有,这么叫是因为蹭热度。2.是一门前端工程师的编程语言,但是它本身有很多逻辑错误。2.JS基础1.注释语法: //单行......
  • web前端开发:JavaScript网页脚本语言
    目录JavaScript网页脚本语言一、JavaScript简介1.注释语法2.引入JS的方式(1)head内script标签内编写(2)head内script标签src属性引入外部JS资源(3)body内最底部通过script标签src......
  • 前端之JavaScript
    前端之JavaScriptjs简介全程javascript但是与java一毛钱关系都没有之所以这么教是为了蹭当时大火的java的热度,所有我们一般把它叫做JS他是一门前端工程师的编程语言......
  • JavaScript简介
    JavaScript概述全称JavaScript,但是与Java一毛钱关系都没有,之所以这么叫是为了蹭Java的热度。它是一门前端工程师的编程语言,但是它本身有很多逻辑错误(不是很严谨)。IT行......
  • JavaScript——基础知识、函数
    JavaScript——基础知识、函数一、JS简介 JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但......