首页
学习
活动
专区
工具
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

    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

    对于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

    28020

    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 中的函数其实是对象

    68820

    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.2K20

    applycall、bind函数的区别

    applycall、bind函数的区别一、前言大多数人都知道,使用applycall、bind可以调用函数,并改变函数中this的指向。做一个简单记录,免得以后忘记了。...二、apply使用:函数.apply(obj, arg[])参数:第一个参数为函数中this指向的对象第二个参数是函数中原本的参数,由数组进行封装JAVASCRIPTvar user = { username...(other, [other.age]);三、call使用:函数.call(obj, args...)参数:第一个参数为函数中this指向的对象,后面的参数跟着原本的函数就好,加在后面就行JAVASCRIPTvar...call、bind他们的异同点相同点:都可以改变函数中this的指向,且都将作为第一个参数进行使用不同点(传参方面)apply:在传入改变this的对象之后,将原来的函数参数,打包成一个数组进行传参call...(调用方面)applycall:函数.apply()或者函数.call(),即可发起调用bind:先返回一个改变指向的函数,再通过这个函数进行调用我是半月,祝你幸福!!!

    9210

    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.6K30

    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.

    66370

    划重点:js中的this、callapply

    js中this有4种指向,分别为: 作为对象的方法调用 作为普通函数调用 构造器调用 Function.prototype.call或Function.prototype.apply调用 1、当作为对象的方法调用时...Function.prototype.call或Function.prototype.apply,它们的作用是完全一样的,都是改变函数的this指向。区别在于两者传入参数的不同。...关于applycall,两者的作用完全一致,都是更改调用applycall的函数体内的this对象指向。...区别仅在于两者的第二个参数传入不同: 1func.apply( 2 [参数一:将调用apply方法的函数体内的this对象指向改为指向本参数], 3 [参数二:传入调用apply方法的函数体内的参数集合...延伸应用: 理解了this、callapply后,在实际js开发中,可以很方便的实现对象的继承 继承demo1: 1var Parent = function(){ 2 this.name

    97820
    领券