首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法?
call,apply,bind这三个方法其实都是继承自Function.prototype中的,属于实例方法。
上面代码中,都返回了true,表明三种方法都是继承自Function.prototype的。当然,普通的对象,函数,数组都继承了Function.prototype对象中的三个方法,所以这三个方法都可以在对象,数组,函数中使用。
绑定回调函数的对象
如果在回调函数中使用this对象,那么this对象是会指向DOM对象,也就是button对象。如果要解决回调函数中this指向问题,可以用如下方法。
点击按钮以后,控制台将会显示true。由于apply方法(或者call方法)不仅绑定函数执行时所在的对象,还会立即执行函数(而bind方法不会立即执行,注意区别),因此不得不把绑定语句写在一个函数体内。
call,apply,bind方法的联系和区别
其实用于指定函数内部的this指向的问题,这三个方法都差不多,只是存在形式上的差别。读者可以将以上的例子用三种方法尝试用三种方法实现。
总结一下call,apply,bind方法:
a:第一个参数都是指定函数内部中this的指向(函数执行时所在的作用域),然后根据指定的作用域,调用该函数。
b:都可以在函数调用时传递参数。call,bind方法需要直接传入,而apply方法需要以数组的形式传入。
c:call,apply方法是在调用之后立即执行函数,而bind方法没有立即执行,需要将函数再执行一遍。有点闭包的味道。
d:改变this对象的指向问题不仅有call,apply,bind方法,也可以使用that变量来固定this的指向。
领泰科技网还为您提供以下相关内容希望对您有帮助:
Call、Apply、Bind的用法,以及区别是什么?
参数传递方式: call:将参数依次传递给函数。 apply:将整个数组或类数组对象作为参数一次性传递。 bind:可以分多次传入参数,这些参数将在新函数被调用时与后续传入的参数一起传递给原函数。 返回值: call和apply:没有返回值。 bind:返回一个新的函数。理解并熟练运用这些方法,有助于在JavaScript编程中更灵活地控制函数执行时的上下文。
你知道什么是call、apply、bind?
用法:var newFunction = functionName.bind;总结:call、apply、bind的主要区别在于它们传递参数的方式和返回的结果。call和apply会立即调用函数,而bind则返回一个新的函数,这个新函数的this值在创建时就确定了。在实际开发中,应根据具体场景选择合适的方法来改变函数的this指向。
Javascript中call和apply的区别与详解
apply()是你可以用来操作this的第二个函数方法。apply()的工作方式和call()完全一样,但它只能接受两个参数: this 的值和一个数组或者类似数组的对象,内含需要被传入函数的参数(也就是说你可以把arguments对象作为apply()的第二个参数)。你不需要像使用call()那样一个个指定参数,而是可以轻松传递...
javascript中apply,call和bind的区别
三者区别:1、apply:应用某一对象的一个方法,用另一个对象替换当前对象 最多只能有两个参数——新this对象和一个数组 argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里面。2、call:调用一个对象的一个方法,以另一个对象替换当前对象 则...
你知道什么是call、apply、bind?
call、apply、bind都是JavaScript中用于改变函数运行时this指向的方法。call:功能:允许你指定特定的this值,并传递单个或多个参数来调用一个函数。参数:第一个参数是this值,其余参数是函数需要接收的参数。用法:常用于需要在特定上下文中执行函数,并且需要传递多个参数时。apply:功能:与call类似,允许...
关于javascript中apply和call方法的区别
1、方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象...
js-改变this指向的几种方法
相同点: 都可以改变函数内部的this指向. 区别点: 1.call 和 apply 会调用函数, 并且改变函数内部this指向. 2.call 和 apply 传递的参数不一样, call 传递参数 aru1, aru2..形式 apply 必须数组形式[arg] 3.bind 不会调用函数, 可以改变函数内部this指向. 主要应用场景: ...
Js(Javascript)中的bind方法的使用
“`与call和apply的区别:call和apply方法也是用来设置this值的,但它们在调用函数的同时立即设置this的值,而不是返回一个新的函数。call需要将参数依次列出,而apply则将所有参数作为数组传递。通过bind方法,你可以更灵活地控制函数的this值和预设参数,从而提高代码的复用性和可读性。
JS -- 详解bind()
以及作为构造函数使用时的处理。手写 bind() 包含了返回函数的模拟实现、传参的模拟实现以及构造函数效果的模拟实现,最终版代码进行了优化,确保在作为构造函数使用时正确绑定上下文。bind()、apply()、call() 的区别在于使用方式和适用场景,它们都是用于改变函数执行上下文的方法。
前端开发es6总结:es6函数的新特性
bind:bind方法用于创建一个新的函数,这个新函数的this值被指定为bind方法的第一个参数,其余参数将作为新函数的初始参数,供调用时使用。与call和apply不同,bind不会立即调用函数,而是返回一个新的函数。综上所述,ES6为JavaScript函数引入了多项新特性,包括箭头函数、剩余参数、函数参数的默认值以及...
Copyright © 2019- ltkm.cn 版权所有
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务