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

js call()、apply()、bind()用法和区别

1. call() 语法: fun.call(thisArg,arg1,arg2,…) fun: 表示一个函数 thisArg: this要指向的对象,如果是null 和 undefined,则指向window...特性: fun.call(thisArg,arg1,arg2,…) 会立即调用fun函数; call 方法将一个函数的对象上下文从初始的上下文改变为由 thisArg 指定的新对象,如果没有提供 thisArg...特性: fun.apply(thisArg,[arg1,arg2,…]) 会立即调用fun函数; apply方法将一个函数的对象上下文从初始的上下文改变为由 thisArg 指定的新对象,如果没有提供...()、apply()和bind()的应用 1. call() call 常用来继承,因为ES6之前没有extends,用构造函数来模拟继承。...() apply 常用于与数组有关的操作,因为传递的参数是数组。

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

js callapply

前言   callapply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。   ...callapply二者的作用完全一样,只是接受参数的方式不太一样。...方法定义   apply   Function.apply(obj,args)方法能接收两个参数:     obj:这个对象将代替Function类里this对象   args:这个是数组或类数组,apply...call   call方法与apply方法的第一个参数是一样的,只不过第二个参数是一个参数列表   在非严格模式下当我们第一个参数传递为null或undefined时,函数体内的this会指向默认的宿主对象...,在浏览器中则是window var test = function(){ console.log(this===window); } test.apply(null);//true test.call

1.3K20

对于bind、callapply 区别

一、作用 callapply、bind作用是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向 那么什么情况下需要改变this的指向呢?...下面再来看看applycall、bind的使用 apply apply接受两个参数,第一个参数是this的指向,第二个参数是函数接受的参数,以数组的形式传入 改变this指向后原函数会立即执行,且此方法只是临时改变...(null,[1,2]); // this指向window fn.apply(undefined,[1,2]); // this指向window call call方法的第一个参数也是this的指向,后面传入的是一个参数列表...、call、bind三者的区别在于: ① 三者都可以改变函数的this对象指向 ② 三者第一个参数都是this要指向的对象,如果如果没有这个参数或参数为undefined或null,则默认指向全局window...③ 三者都可以传参,但是apply是数组,而call是参数列表,且applycall是一次性传入参数,而bind可以分为多次传入   ④ bind是返回绑定this之后的函数,applycall

25820

JS 手写: callapply、bind

# call # Try it call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。...该方法的语法和作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组。...call() 方法的作用和 apply() 方法类似,区别就是 call() 方法接受的是参数列表,而 apply() 方法接受的是一个参数数组。...使用 apply, 可以只写一次这个方法然后在另一个对象中继承它,而不用在新对象中重复写该方法。 applycall() 非常相似,不同之处在于提供参数的方式。...apply 可以使用数组字面量(array literal),如 fun.apply(this, ['eat', 'bananas']),或数组对象, 如 fun.apply(this, new Array

1.5K30

Js apply() call()使用详解

Js apply方法详解 我在一开始看到javascript的函数applycall时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记...主要我是要解决一下几个问题: applycall区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply...) call:和apply的意思一样,只不过是参数列表不一样....示例 在Studen函数里面可以将apply中修改成如下: Person.call(this,name,age); 这样就ok了 3.什么情况下用apply,什么情况下用call 在给对象参数的情况下,...(Person.call(this,age,name,grade)); 4.apply的一些其他巧妙用法 细心的人可能已经察觉到,在我调用apply方法的时候,第一个参数是对象(this), 第二个参数是一个数组集合

1.4K60

区别和详解:jscall()和apply()的用法

1、关于call()和apply()的疑点: applycall区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 2、语法和参数分析...: applycall都能继承另外一个对象的方法和属性; Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组...,它将作为参数传给Function(args-->arguments) call:和apply的意思一样,只不过是参数列表不一样....,什么情况下用call 使用apply的情况:在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数arguments,这个参数是数组类型。...(sub,3,1); 分析:这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 中的函数其实是对象

63220

js中this指向问题及callapply,bind的区别

js中this指向问题及callapply,bind的区别# 1 this指向# 1.1 what is 'this'?...,apply,bind的区别# 相同点: 都可以改变函数的this指向 第一个参数为this将要指向的对象,后续的传参都是作为函数形参的值 不同点: call的后续传参是一个一个传,然后顺序对应;apply...的后续传参是以数组的形式,解析的时候也是跟call一样顺序对应; callapply没有返回值,而bind改变完this指向后会返回一个改变完this指向之后的原函数的拷贝 可以再次进行调用。...(b, '男', '爬山') a.say.apply(b, ['男', '密室逃脱']) // bind可以向cally一样传参,例如: a.say.bind(b, '男', 'UNO')() // 但由于...例如: a.say.bind(b)('男', 'UNO') 运行的结果如下: 3 小结# 关于this指向、callapply、bind的记录本篇就总结到这里,在日常使用脚手架、组件开发时可能会用的地方比较少

1.1K20

applycall、bind函数的区别

applycall、bind函数的区别 一、前言 大多数人都知道,使用applycall、bind可以调用函数,并改变函数中this的指向。 做一个简单记录,免得以后忘记了。...二、apply 使用:函数.apply(obj, arg[]) 参数: 第一个参数为函数中this指向的对象 第二个参数是函数中原本的参数,由数组进行封装 var user = {...var other = { username: "九月", age: 19 } user["showInfo"].apply(other, [other.age]); 三、call...var showInfo2 = user.showInfo.bind(other, other.age); showInfo2(other.sex); 五、总结 上面对比,总结一下applycall...不同点(调用方面) applycall:函数.apply()或者函数.call(),即可发起调用 bind:先返回一个改变指向的函数,再通过这个函数进行调用 我是半月,祝你幸福!!!

31710

js中的callapply

一、callapply简介 call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。 两个方法都使用了对象本身作为第一个参数。...两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。...二、callapply的相同点和不同点 1. 区别 call传递的参数是序列1,2,3,4 apply传递的参数是集合型[1,2,3,4] 2....相同点 callapply是替换前面函数内部的this指针以及传递参数。 功能:可以自动执行前面的函数 都有两个参数:a. 替换的对象 b....console.log(this,a,b,c);//{name: "张三", age: 20} 1 2 3 } method.call(obj,1,2,3); 方法2:使用apply

1.5K30

callapply、bind的应用和区别

1. call( ) 面试中常问的Js中关于callapply、bind的问题,比如: 怎么利用callapply来求一个数组中最大或者最小值 如何利用callapply来做继承 applycall...、bind的区别和主要应用场景 首先,要明白这三个函数的存在意义是什么?...区别 上面看起来三个函数的作用差不多,干的事几乎是一样的,那为什么要存在3个家伙呢,留一个不就可以。...所以其实他们干的事从本质上讲都是一样的动态的改变this上下文,但是多少还是有一些差别的.. ① callapply与bind的差别 callapply改变了函数的this上下文后便执行该函数,而bind...② callapply区别 他们俩之间的差别在于参数的区别callapply的第一个参数都是要改变上下文的对象,而call从第二个参数开始以参数列表的形式展现,apply则是把除了改变上下文对象的参数放在一个数组里面作为它的第二个参数

34850

JavaScript之apply()和call()的区别

我 在一开始看到javascript的函数applycall时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示 例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家分享...applycall区别在哪里 2.        什么情况下用apply,什么情况下用call 3.        ...apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于applycall的定义,然后用示例来解释这两个方法的意思和如何去用.         ...)          call:和apply的意思一样,只不过是参数列表不一样.  ...call示例 在Studen函数里面可以将apply中修改成如下: Person.call(this,name,age); 这样就ok了 3.

62270
领券