首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    call、apply、bind的应用和区别

    1. call( ) 面试中常问的Js中关于call、apply、bind的问题,比如: 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply、call...、bind的区别和主要应用场景 首先,要明白这三个函数的存在意义是什么?...fn的this改变为我们要想要的结果,并且把对应的参数值准备好,以后要用到了,直接的执行即可,也就是说bind同样可以改变this的指向,但和apply、call不同就是不会马上的执行(如上一个例子)...所以其实他们干的事从本质上讲都是一样的动态的改变this上下文,但是多少还是有一些差别的.. ① call、apply与bind的差别 call和apply改变了函数的this上下文后便执行该函数,而bind...② call、apply的区别 他们俩之间的差别在于参数的区别,call和apply的第一个参数都是要改变上下文的对象,而call从第二个参数开始以参数列表的形式展现,apply则是把除了改变上下文对象的参数放在一个数组里面作为它的第二个参数

    38950

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

    我 在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示 例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家分享...如有什么不对的或者说法不明确的地方希望读者多多提一些意见,以便共同提高.. 主要我是要解决一下几个问题: 1.        apply和call的区别在哪里 2.        ...apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply和call的定义,然后用示例来解释这两个方法的意思和如何去用.         ...)          call:和apply的意思一样,只不过是参数列表不一样.  ...什么情况下用apply,什么情况下用call 在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数arguments,这个参数是数组类型,并且在调用 Person的时候参数的列表是对应一致的

    67470

    call和 apply的区别是什么

    2015-07-12 15:02:21 一、方法的定义 call方法: 语法:call(thisObj,Object) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。...说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。...apply方法: 语法:apply(thisObj,[argArray]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。...window对象,其实myFun函数和定义的var money = 100;都作为window对象子对象(即全局对象) myFun.apply(window,[]); //save to window.myFun.apply...',23),money,300,'mycardId'); //return 500, 后面money,300和mycardId是参数列表作为参数,一一列出 //这个时候myFun方法里面的this指向的是

    52320

    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...: this要指向的对象,如果是null 和 undefined,则指向window全局对象; 参数是一个数组。...,如果是null 和 undefined,则指向window全局对象; 从arg1开始,都是要给fun传递的参数。...this的函数 newFun(); // 3 4. call()、apply()和bind()的应用 1. call() call 常用来继承,因为ES6之前没有extends,用构造函数来模拟继承。

    1.1K30

    apply、call、bind函数的区别

    apply、call、bind函数的区别一、前言大多数人都知道,使用apply、call、bind可以调用函数,并改变函数中this的指向。做一个简单记录,免得以后忘记了。...传参和call一致,在后面添加原函数的参数就可以JAVASCRIPT// 也可以这样写,效果是一样的user.showInfo.bind(other, other.age, other.sex)();​...call、bind他们的异同点相同点:都可以改变函数中this的指向,且都将作为第一个参数进行使用不同点(传参方面)apply:在传入改变this的对象之后,将原来的函数参数,打包成一个数组进行传参call...:在传入改变this的对象之后,依次传入原本的函数参数bind:由于特性,它的传参分为一次参数和二次传参,一次传参与call相同;二次传参首次传参与call类似,后一次调用传参补全原函数剩余的参数不同点...(调用方面)apply、call:函数.apply()或者函数.call(),即可发起调用bind:先返回一个改变指向的函数,再通过这个函数进行调用我是半月,祝你幸福!!!

    9510

    call和apply

    首先个人感觉call和apply还是挺神奇的,简简单单就改变了this的作用域,下面我们来共同学习一下 1.call和apply的语法(改变this的作用域,有点像冒充的感觉,例子如下) function.apply...(person ,["孙悟空","七十二变"]);// 这步改变了this的作用域,通俗的理解就是person对象冒充了People对象, 然后使用了People对象中的属性和方法 people1...); 了解: 调用call的对象必须是个函数function call的第一个参数将会是function改变上下文后指向的对象, 第二个参数开始可以接收任意个参数...(person ,"啄木鸟","捉虫子"); people1.paly(); person.paly() 代码基本没变,就是把apply替换成了call,作用相同,两者最大区别就是传递参数的方式不同..., 通俗说 call传递参数是直接用双引号,然后一个接着一个传递 apply传递参数是通过一个数组的形式传递

    80130

    对于bind、call、apply 区别?

    一、作用 call、apply、bind作用是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向 那么什么情况下需要改变this的指向呢?...(obj),0); //martin,this指向obj对象 二、区别 下面再来看看apply、call、bind的使用 apply apply接受两个参数,第一个参数是this的指向,第二个参数是函数接受的参数...(在浏览器中) fn.call(null,[1,2]); // this指向window fn.call(undefined,[1,2]); // this指向window bind bind方法和call... ,bind不是立即执行需要执行一次 bindFn(1,2) // this指向obj fn(1,2) // this指向window 小结 从上面可以看到,apply、call、bind三者的区别在于...是数组,而call是参数列表,且apply和call是一次性传入参数,而bind可以分为多次传入   ④ bind是返回绑定this之后的函数,apply、call 则是立即执行 三、实现 实现bind

    28420

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

    1、关于call()和apply()的疑点: apply和call的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 2、语法和参数分析...: apply和call都能继承另外一个对象的方法和属性; Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组...,它将作为参数传给Function(args-->arguments) call:和apply的意思一样,只不过是参数列表不一样....,这样就将属性创建到了student对象里面 4、 什么情况下用apply,什么情况下用call 使用apply的情况:在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数...分析:即我没有的方法或属性,通过call继承,我就拥有了你的方法和属性,可以进行相关的操作了。

    69120

    js call 和 apply

    前言   call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。   ...call 和 apply二者的作用完全一样,只是接受参数的方式不太一样。...方法定义   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

    call()方法和apply()方法有什么区别?

    call() 和 apply() 都是 JavaScript 中用于调用函数的方法,它们的主要区别在于参数的传递方式。...call() 方法: call() 方法是 JavaScript 函数的原生方法之一,它允许你在指定的作用域内调用函数,并且可以显式地设置函数的 this 值和传递参数列表。...apply() 方法: apply() 方法与 call() 方法类似,也是用于在指定的作用域内调用函数,但它接受的参数是以数组或类数组对象的形式传递。...主要区别: call() 方法使用逗号分隔的参数列表来传递参数,而 apply() 方法使用数组或类数组对象来传递参数。...总结,call() 和 apply() 方法都允许你在指定的作用域内调用函数,并设置函数的 this 值,但参数的传递方式不同。

    17810

    JavaScript中的 Call 和 Apply

    1. call 和 apply的区别 Function.prototype.call 和 Function.prototype.apply都是非常常用的方法,它们的作用一模一样,区别仅在于传入参数形式的不同...call传入的参数数量不固定,跟apply相同的是,第一个参数也是代表函数体内的this指向,从第二个参数开始往后,每个参数被依次传入函数: ?...当调用一个函数时,JavaScript的解释器并不会计较形参和实参在数量、类型以及顺序上的区别,JavaScript的参数在内部就是用一个数组来表示的,从这个意义上来说,apply比call的使用率更高...call是包装在apply上面的一颗语法糖,如果我们明确地知道函数接受多少个参数,而且想一目了然的表达形参和实参的对应关系,那么也可以用call来传递参数。...有时候我们使用call或者apply的目的不在于指定this指向,而是另有有途,比如借用其也对象的方法,那么我们可以传入null来代替某个具体的对象: ? 2. call和apply的用途 (1).

    59810

    模拟实现 call 和 apply

    模拟实现 call 和 apply 本文参考:深度解析 call 和 apply 原理、使用场景及实现 基础 首先来认识一下 call 和 apply,它们都是 Function.prototype...} 1 2 所以 call 和 apply 的执行效果其实是一样的,区别就在于接收参数的形式,是参数列表,还是参数数组。...要想模拟实现 call,必须得先掌握几个关键点: call 接收的参数形式和含义,及 thisArg 对 null,undefined,基本类型的特殊处理 call 本质上是函数的另一种调用,只是修改了函数内的...,this 会绑定到该对象上) 显示绑定(call, apply, bind, Reflect.apply) new 绑定(当函数和 new 使用时会被当做构造函数,构造函数内部的 this 会绑定到内部新创的对象上...Function.prototype.apply(thisArg, [argsArray]) apply 跟 call 本质上是一样的,区别仅在于对参数的接收形式不同,直接看模拟实现的代码: Function.prototype.apply2

    41220

    js中的call和apply

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

    1.7K30

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

    apply()、call()和bind()方法都是Function.prototype对象中的方法,而所有的函数都是Function的实例。三者都可以改变this的指向,将函数绑定到上下文中。 1....语法: func.apply(thisArg, [argsArray]) 1.2 Function.prototype.call() call() 方法调用一个函数, 其具有一个指定的this值和分别地提供的参数...结果相同,call()和apply(),第一个参数都是要绑定上下文,后面的参数是要传递给调用该方法的函数的。...应用场景 3.1 求数组中的最大和最小值 ? 3.2将类数组转化为数组 ? 3.3 数组追加 ? 3.4 判断变量类型 ? 3.5 利用call和apply做继承 ?...(3).三者都可以传参,但是apply是数组,而call是有顺序的传入。 (4).bind 是返回对应函数,便于稍后调用;apply 、call 则是立即执行 。 5.

    1.2K20

    (七)call、bind、apply三者的区别

    一、call、bind、apply三者的区别 三者都可以改变函数的 this 对象指向。...三者都可以传参,但是 apply 是数组,而 call 是参数列表,且 apply 和 call 是一次性传入参数,而 bind 可以分为多次传入。...apply 写了就等于直接调用函数 区别于 call 就是后面参数的传入,其他都一样 food.apply(obj,[要传给函数的参数1,要传给函数的参数2...])...相同点 这三个都能够改变 this 指向 call 和 apply 的第一个参数都一样是要指向的 this ,写他们就等于写了函数的执行 call 和 bind 的参数设置相同 不同点 call 和...apply 的给函数传入的参数设置不一样,call 直接逗号隔开就好,apply 需要用数组 bind 不会立即执行,call 和 apply 都会立即执行 一文搞定this、apply、call、bindopen

    99420
    领券