JavaScript中call()、apply()、bind()的用法

Dax 等级 709 0 0
标签: bindapply

call() apply() bind() 都是用来更改 this 的指向的

其中bind() 返回的是一个函数,必须执行才行

传参差异:

call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象,第二个参数差别就来了: call的参数是直接放进去的,第二第三第n个参数全都用逗号分隔,直接放到后面 obj.myFun.call(db,'成都', ... ,'string' ); apply的所有参数都必须放在一个数组里面传进去 obj.myFun.apply(db,['成都', ..., 'string' ]); bind除了返回是函数以外,它 的参数和call 一样。

收藏
评论区

相关推荐

call、apply、bind三者为改变this指向的方法。
共同点: 第一个参数都为改变this的指针。若第一参数为null/undefined,this默认指向window 差异点如下: 1.call(无数个参数) 第一个参数:改变this指向 第二个参数:实参 使用之后会自动执行该函数 function fn(a,b,c){ console.log(this,abc); // this指
bind、call、apply 区别?如何实现一个bind?
一、作用 call、apply、bind作用是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向 那么什么情况下需要改变this的指向呢?下面举个例子 var name"lucy"; const obj{     name:"martin",     say:function () {         co
一篇文章带你了解JavaScript this关键字
与其他语言相比,this关键字在JavaScript中的行为略有不同。JavaScript中,this关键字引用其所属的对象。根据使用位置,它具有不同的值。一、前言方法中,this关键字引用其所属的对象。1. this指的是全局对象在函数中。 2. this引用全局对象在函数中。 3. 在严格模式下,this是未定义的在事件中。 4.
JavaScript中call()、apply()、bind()的用法
call() apply() bind() 都是用来更改 this 的指向的其中bind() 返回的是一个函数,必须执行才行传参差异:call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象,第二个参数差别就来了:call的参数是直接放进去的,第二第三第n个参数全都用逗号分隔,直接放到后面 obj.myFun.call(db,'
jasypt
1 问题描述 ====== 在Spring Boot中使用jasypt-spring-boot进行加密,但是提示: Description: Failed to bind properties under 'spring.datasource.password' to java.lang.String:
MySQL在Ubuntu远程配置
MySQL远程连接访问 =========== 在普通Linux下配置: ------------ 在这个配置文件 /etc/mysql/my.cnf 修改: bind-address        = 127.0.0.1 修改为 #bind-address        = 127.0.0.1 或者 b
Mysql5.7版本实现row_number窗口函数的分组排序功能
我在这篇博客[https://www.cnblogs.com/chendongblog/p/11887712.html](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.cnblogs.com%2Fchendongblog%2Fp%2F11887712.html)中说过, 在 sq
ES6中箭头函数与普通函数this的区别(转)
看到一篇别人的博客,对this的理解又加深了一些。 **普通函数中的this:** 1\. this总是代表它的直接调用者, 例如 obj.func ,那么func中的this就是obj 2.在默认情况(非严格模式下,未使用 'use strict'),没找到直接调用者,则this指的是 window 3.在严格模式下,没有直接调用者的函数中的thi
FreeSWITCH 客户端fs_cli连接设置(acl)
FreeSWITCH 默认配置只能 在本机连接, 要从 外面连接, 就要配置: 1 acl.conf.xml::network-lists/list 2 event_socket.conf.xml::apply-inbound-acl 参数 (指定使用哪个acl.xml::network-lists/list) 而 apply-inbou
Gradle 生产与开发build.gradle配置不一样时打包(Springboot)
1.先说下缘由,项目没有使用配置中心,所以本地和开发有不同的build.gradle文件 def env=System.getProperty("profile") ?:"dev" if(env=='prd'){ apply from:"build-prd.gradle" }else{ apply f
IE下propertychange事件引发的栈溢出问题解决
$(".com_text").bind("input propertychange", function() { //函数执行... }); 在IE 下居然 栈溢出。 Stack overflow at line XXX 堆栈溢出几乎都是陷入死循环了. 修改成onkeydown的事件绑定来处
JS 中的this指向问题和call、apply、bind的区别
#### this的指向问题 * 一般情况下this对象指向调用函数的对象,全局环境中执行函数this对象指向window。 function a(){ console.log(this); //输出函数a中的this对象 } function b(){}; var c={name:"call"}
JavaScript中call()与apply()有什么区别?
今天读《JavaScript权威指南》时发现其中有段代码用到了apply方法用于递归实现数组的展开。可是我不懂这个函数的用法,因此查了一下,将资料整理如下。 Javascript的每个Function对象中有一个apply方法: function.apply([thisObj[,argArray]]) 还有一个类似功能的call方法:
React组件中的函数绑定this的几种方式
在React中使用class定义组件时如果不注意this的指向问题,会带来一些麻烦。 绑定this主要有下面两种方法: 1\. bind() 在class中定义函数,然后在**构造方法**中使用bind()绑定当前的组件对象。 class MyComponent extends React.Component { constr
Redis bind属性的配置与redis连接
Redis连接 ------- 文章出处,https://blog.csdn.net/a578977626/article/details/78202202 **bind配置了什么ip,别人就得访问bind里面配置的ip才访问到redis服务。** 一台主机,可能会有多张网卡,或者对应多网段内网的Ip,公网IP等,也就意味着其他机器可以通过多个IP地址