首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript中call,apply,bind方法的使用及原理

在JavaScript里,call(),apply(),bind()都是Function内置的三个方法, 它们的作用都是显示的绑定this的指向,三个方法的第一个参数都是this指向的对象,也就是函数在运行时执行的上下文...当我们定义一个新的对象,需要使用其他对象的方法的时候,我们不需要重新开发重复的方法逻辑,借助apply,apply,bind三个方法可以实现对这些的方法的调用。...bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被bind的第一个参数指定,其余的参数将作为新函数的参数供调用时使用,第一个thisArg在setTimeout中创建一个函数时传递的原始值都会转化成...特点: apply,call,bind三个方法第一个参数都是函数在调用时this指向的对象,也就是运行时的上下文(this显示绑定的原理) apply,call第一个参数为空,null,undefined...let cacheNameByBind = cacheName.bind(cacheFun); cacheNameByBind(); // Name is cache 实现原理 apply Function.prototype.applyFun

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

什么是bind()方法

在 JavaScript 中,bind() 方法是函数对象的一个内置方法,用于创建一个新的函数,并将其绑定到指定的对象作为该函数的上下文(即 this 值)。...bind() 方法的语法如下: function.bind(thisArg[, arg1[, arg2[, ...]]]) thisArg:要绑定到函数的对象,即绑定后函数的上下文。...bind() 方法返回一个新的绑定函数,它与原始函数具有相同的函数体和作用域,但具有固定的上下文。...bind() 方法还可以用于预设函数的参数。通过在 bind() 方法的第二个参数开始传递参数,可以固定部分或全部参数的值,而不影响绑定后函数的上下文。.../ 输出:8 使用 bind() 方法将 add() 函数绑定到 null 上下文,并预设了第一个参数为 5。

25050

彻底理解了call()方法,apply()方法bind()方法

JavaScript给我们提供了 3 中 函数方法 来改变this的指向。 2.call()方法 这个方法的第一个参数表示this指向的对象,后面的所有参数都是函数的参数。...這個方法和call方法的作用都是相同的,只不过在传递参数时候,call方法可以传递多个参数,而apply方法只能传递一个方法,并且要求是一个数组。...sayName.apply(person1,['person1']); //'person1--->李四' sayName.apply(person2,['person2']); //'person2--->王二' 4.bind...()方法 bind()方法第一个参数是我们希望函数中this指向的对象,后面的参数是我们希望给函数的参数绑定的值。...myName(age,gender){ console.log(this.name,age,gender); } var newName = myName.bind

57420

std::bind in std::bind 编译失败

这块,std::bind的返回值被用作传递给std::bind的一个参数。...; 经过错误排查,本身std::bind()这个是没问题的,当加上如果对update_进行赋值,就会报如上错误,所以问题就出在赋值这块,即外部std::bind期望的类型与内部std::bind的返回类型不匹配...• _Bind:_Bind和_Bind_result,std::bind的返回类型; • 辅助:_Bind_check_arity、__is_socketlike、_Bind_helper和_Bindres_helper...(ps:此处所说的std::bind()是Index示例中嵌套的那个std::bind()操作)。...虚函数、函数指针以及变体 【Modern C++】深入理解移动语义 【Modern C++】深入理解左值、右值 智能指针-使用、避坑和实现 内存泄漏-原因、避免以及定位 GDB调试-从入门实践到原理

61620

Go: Gin框架中的Bind()方法技术解析

本文将深入探讨Bind()方法背后的技术实现,解析它是如何处理不同数据类型的。...二、Gin的Bind()方法概述 Gin框架的Bind()方法用于将客户端请求中的数据(例如JSON、XML、表单数据等)绑定到Go的结构体中。...三、技术实现 Bind()方法的技术实现可以分为以下几个关键步骤: 3.1 请求类型识别 首先,Bind()方法需要识别HTTP请求中的Content-Type头部,这一头部信息标识了请求体中数据的格式...,Gin会调用该绑定器的Bind()方法来解析HTTP请求中的数据。...五、总结 Gin框架的Bind()方法通过抽象和封装绑定和验证逻辑,极大简化了数据处理流程,使得开发者可以更加专注于业务逻辑的实现。

15010

使用 bind 设置 DNS 服务器的方法

fedora.local (192.168.1.160)- 主 DNS 服务器 client.fedora.local (192.168.1.136)- 客户端 DNS 服务器配置 使用 sudo 安装 bind...包: $ sudo dnf install bind bind-utils -y bind 包提供了 /etc/named.conf 配置文件,来供你配置 DNS 服务器。...安装 bind 程序: $ sudo dnf install bind-utils -y 编辑 /etc/resolv.conf 文件,并将主 DNS 配置为唯一的名称服务器: $ sudo vi...为内网网站提供内线的IP地址解析,或者实现双线解析 (3)当你的ISP限制了二级域名和高级管理特性,你需要自己搭建DNS服务器来满足自己的需要 (4)避免DNS劫持 (5)和别的解决方案集成 总结 到此这篇关于使用 bind...设置 DNS 服务器的文章就介绍到这了,更多相关bind dns服务器内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

2.9K41

解析call、apply、bind三者区别及实现原理

我们都会遇到在执行函数的时候,如果需要保证函数内部this不被污染或者说需要使函数内部this指向到指定对象的时候,都会按情况分别使用到call、apply、bind方法来实现需求。...,合并后的顺序就是相当于把bind执行的第二参数及之后参数与新绑定函数参数做了一个合并,新绑定函数参数会基于bind方法函数第二参数及之后参数结束位置开始进行合并。...fn函数内部打印的this.name为Undefined的原因是因为this通过new关键字去实例化绑定函数的时候,因为bind方法内部做了特殊处理,这个处理可以看作成过滤了当前bind的本次this指向操作...使用call或者apply方法,它们第一个参数,都是设置函数内部this需要指向的目标。...那么此时this instanceof O 就为true,所以返回的this就是当前被实例化的对象;这样就会忽略掉bind方法的this指向,实现上述new一个bind后的函数特性。

52530

通过自己实现函数 call,apply,bind 来了解他们的原理

上面的 join 方法其实就是把一个数组转换成了字符串,除了 join,你还能想到什么呢?对。可以使用字符转换来实现。...bind的实现 原生的bind有两种方式 var tal = { name: "踏浪", sex: "男" } function person(age) { console.log(age...使用bind都需要调用两次,而第一次就是返回一个函数。原函数的参数可以在bind中调用,也可以在第二次运行时候调用。...这三种方法,能够更深刻的理解到这三个函数的原理,同时涉及到的只是点也多:this指向,arguments类数组,每一个对象都要的toSting方法(另一个是valueOf),eval方法的使用(不是滥用...,webpack中就使用了这个方法),函数对象可以使用 delete 删除(使用var 定义的无法使用delete删除)。

78340

【春节日更】瞅瞅,你是否了解 bind 方法

今天给大家介绍 Function.prototype.bind() 方法 先来看道相关题目: function f(y,z){ return this.x+y+z; } var m =...f.bind({x:1},2); console.log(m(3)); 答案多少呢?...哈哈哈 没对就好好看看下面的介绍吧 01 bind 方法 首先,bind 方法,是指 Function.prototype.bind() MDN官方说明: bind() 方法创建一个新的函数,在 bind...将上面的描述,总结为以下三点: 1、bind() 方法会创建一个新的函数 2、这个新函数的 this 被指定为 bind() 的第一个参数 3、其余参数将作为新函数的参数 了解了关于bind的说明,...(m(3)); 解析: 1、m 是 bind() 返回的新函数 2、调用m函数时,会执行函数 f ,但 f 中的this 指的就是bind的第一个参数,即{x:1} ;故this.x 值为1 3、bind

15910

javascript函数的call、apply和bind原理及作用详解

call call 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数: function.call(thisArg, arg1, arg2,...)...请注意,this 可能不是该方法看到的实际值:如果这个函数处于非严格模式下,则指定为 null 或 undefined 时会自动替换为指向全局对象,原始值会被包装。...和 apply 其实是同一个东西,区别只有参数不同,call 是 apply 的语法糖,call 方法接受的是一个参数列表,而 apply 方法接受的是一个包含多个参数的数组 bind bind 方法创建一个新的函数...,在 bind 被调用时,这个新函数的 this 被指定为 bind 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。...function.bind(thisArg[, arg1[, arg2[,...]]])

19620

通过自己实现函数 call,apply,bind 来了解他们的原理

上面的 join 方法其实就是把一个数组转换成了字符串,除了 join,你还能想到什么呢?对。可以使用字符转换来实现。...bind的实现 原生的bind有两种方式 var tal = { name: "踏浪", sex: "男" } function person(age) { console.log(age...使用bind都需要调用两次,而第一次就是返回一个函数。原函数的参数可以在bind中调用,也可以在第二次运行时候调用。...这三种方法,能够更深刻的理解到这三个函数的原理,同时涉及到的只是点也多:this指向,arguments类数组,每一个对象都要的toSting方法(另一个是valueOf),eval方法的使用(不是滥用...,webpack中就使用了这个方法),函数对象可以使用 delete 删除(使用var 定义的无法使用delete删除)。

34020
领券