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

bind()、call()、apply()理解及用法

apply和call都是为了改变某个函数运行时的上下文而存在的(就是为了改变函数内部this的指向),Function对象的方法,每个函数都能调用; 使用apply或call方法,其运行的上下文指向第一个参数...,apply的第二个参数是一个参数数组,call的第二个及其以后的参数都是数组里面的元素。...apply和call的常用用法: 让类数组拥有方法; binde 方法的使用 也是改变函数体内this的指向,bind()是es5中的方法,bind会创建一个新函数,称为绑定函数,当调用这个函数的时候...Array.prototype.slice.call(arguments); 上面这段代码,它的作用是将一个类数组转化为真正的数组,arguments是传给call的那个上下文(由于arguments自己没有...这之后的代码就很好理解,返回一个函数,该函数把传给bind的第一个参数当做执行上下文,由于args已经是一个数组,排除第一项,将之后的部分作为第二部分参数传给apply,前面讲过apply的用法

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

js中call与apply用法

前天去面试,有个gg问了一些js知识,其中有一道call与apply用法的题目,尽管在365天前用过call方法,但当时还是没能答上来,今天深入总结一下 call和apply,它们的作用都是将函数绑定到另外一个对象上去运行...);                 // 参数数组,argArray 上面两个函数内部的this指针,都会被赋值为thisArg,这可实现将函数作为另外一个对象的方法运行的目的 一、call 的简单用法...首先,我们先看个简单的例子(call): <!...调用call方法,第二个参数属于函数对象func2的参数,因此alert(x)为第二个参数func2 二、call 继承用法与改进 js使用call模拟继承 测试代码: <!...(this); // call for A baseB.call(this); // call for B } window.onload = function() {

2.7K10

JavaScript中apply、call、bind的区别与用法

语法: func.apply(thisArg, [argsArray]) 1.2 Function.prototype.call() call() 方法调用一个函数, 其具有一个指定的this值和分别地提供的参数...用法 这三个方法的用法非常相似,将函数绑定到上下文中,即用来改变函数中this的指向。 2.1 普通写法 ? 2.2 call 与apply方法的用法 ?...不同之处在于,在给调用函数传递参数时,apply()是数组,call()参数是逐个列出的。 2.3 bind()的用法 ? bind方法传递给调用函数的参数可以逐个列出,也可以写在数组中。...总结bind()的用法:该方法创建一个新函数,称为绑定函数,绑定函数会以创建它时传入bind()的第一个参数作为this,传入bind()的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数...(3).三者都可以传参,但是apply是数组,而call是有顺序的传入。 (4).bind 是返回对应函数,便于稍后调用;apply 、call 则是立即执行 。 5.

1.1K20

区别和详解:js中call()和apply()的用法

1、关于call()和apply()的疑点: apply和call的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 2、语法和参数分析...Function.call(obj,[param1[,param2[,…[,paramN]]]]) obj:这个对象将代替Function类里this对象 params:这个是一个参数列表 3、call...使用call的情况: 如果我的Person的参数列表是这样的(age,name),而Student的参数列表是(name,age,grade),这样就可以用call来实现了,也就是直接指定参数列表对应值的位置...(Person.call(this,age,name,grade)); 5、apply的一些其他巧妙用法 细心的人可能已经察觉到,在我调用apply方法的时候,第一个参数是对象(this), 第二个参数是一个数组集合...6、call的其他重要用法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]] 说明 : call 方法可以用来代替另一个对象调用一个方法。

64620

JS中的call()方法和apply()方法和slice()用法总结

每个函数都包含两个非继承而来的方法:call()方法和apply()方法。 2. 相同点:这两个方法的作用是一样的。...一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。...) changeColor.call(window); //red changeColor.call(document); //yellow changeColor.call(this);...call()方法 第一个参数和apply()方法的一样,但是传递给函数的参数必须列举出来。 语法:call([thisObject[,arg1 [,arg2 [,......说明: call方法可以用来代替另一个对象调用一个方法,call方法可以将一个函数的对象上下文从初始的上下文改变为thisObj指定的新对象,如果没有提供thisObj参数,那么Global对象被用于thisObj

85320

javascript前端开发:腾讯超难面试题让你理解call用法

fn); fn.call.call.call(fn,1,2); fn.call.call.call.call(fn,1,2,3); 答案: fn.call(1); // 1,undefined,NaN...fn.call.call(fn); // fn,undefined,NaN fn.call.call.call(fn,1,2); // 1,2,NaN fn.call.call.call.call(fn...A.call(fn),这里执行call方法,把 A 中的关键字this修改为函数 fn ,然后再把函数 A(fn.call) 执行; fn.call.call.call(fn,1,2);通过上一条的原型链的方法我们可以把...fn.call.call.call 看成 A(fn.call.call).call 执行,此时括里的参数 fn 已经作为函数执行了,所以就成了 A.call(1,2) 执行!...1作为第一个参数改变 call 前面函数里的this,后面的参数作为实参传递到函数的形参里! fn.call.call.call.call(fn,1,2,3); 同上一条原理!

72220

apply()、call()、bind()

apply()、call()、bind() 每个Function对象都存在apply()、call()、bind()方法,其作用都是可以在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域...使用 apply()、call()、bind()都能改变函数对象的this指向 window.name = "A"; //挂载到window对象的name document.name = "B"; //...对象 rollCall.sayName.apply(document); //B //绑定document对象 rollCall.sayName.apply(s); //C //绑定自定义对象 // call...rollCall.sayName.call(); //A //不传参默认绑定window rollCall.sayName.call(window); //A //绑定window对象 rollCall.sayName.call...将参数直接传递,使用逗号分隔 rollCall.sayAllName.call(window,"A","B","C"); // Teacher A B C // bind 仅将对象绑定,并不立即执行

68820
领券