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

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

1. call() 语法: fun.call(thisArg,arg1,arg2,…) fun: 表示一个函数 thisArg: this要指向的对象,如果是null 和 undefined,则指向window...,如果是null 和 undefined,则指向window全局对象; 参数是一个数组。...() 语法: fun.bind(thisArg,[arg1,arg2,…]) fun: 表示一个函数 thisArg: this要指向的对象,如果是null 和 undefined,则指向window全局对象...特性: fun.bind(thisArg,arg1,arg2,…) 不会立即调用fun函数,会返回一个新的指定了this的函数; bind方法将一个函数的对象上下文从初始的上下文改变为由 thisArg...(obj, 1, 2); // 返回的是一个新的指定了this的函数 newFun(); // 3 4. call()、apply()和bind()的应用 1. call() call 常用来继承,因为

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

    call、apply、bind的应用和区别

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

    38950

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

    js中this指向问题及call,apply,bind的区别# 1 this指向# 1.1 what is 'this'?...# 在 ECMAScript 5 中,函数内部存在两个特殊的对象:arguments(一个类数组对象,包含调用函数时传入的所有参数) 和 this(本文将要讲的)。...: fun } obj.sayObj() // 3.当使用new关键字调用,这个时候最靠近this的是new关键字实例化出来的对象,所以下面这两句话的this指向分别是creatPerson1对象和creatPerson2...的区别# 相同点: 都可以改变函数的this指向 第一个参数为this将要指向的对象,后续的传参都是作为函数形参的值 不同点: call的后续传参是一个一个传,然后顺序对应;apply的后续传参是以数组的形式...可以向cally一样传参,例如: a.say.bind(b, '男', 'UNO')() // 但由于bind返回的仍然是一个函数,所以我们还可以在函数调用的时候再进行传参。

    1.2K20

    小程序事件之bind 、catch 、capture-bind和capture-catch的区别

    小程序事件之bind 、catch 、capture-bind和capture-catch的区别 事件分类 事件分为冒泡事件和非冒泡事件 冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。...非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。...事件的绑定: bind和catch都是用来绑定事件的,与 bind 不同, catch 会阻止事件向上冒泡 outer...事件是有两个阶段的:捕获阶段 和 冒泡阶段, 且捕获阶段位于冒泡阶段之前。 \2. 在捕获阶段中,事件到达节点的顺序与冒泡阶段恰好相反 \3....在捕获阶段监听事件时,可以采用capture-bind、capture-catch关键字,后者将中断捕获阶段和取消冒泡阶段 示例: 点击 inner view 会先后调用handleTap2、handleTap4

    73920

    说下js中的bind

    bind的受体是对象,返回的是个新的函数。 我们知道this总是指向调用他的对象。但是有时候我们希望‘固化’这个this。 也就是无论怎么调用这个返回的函数都有同样的this值。...这就是bind的作用。 语法 fun.bind(thisArg[, arg1[, arg2[, ...]]]) 参数 thisArg 当绑定函数被调用时,该参数会作为原函数运行时的 this 指向。...this将永久地被绑定到了bind的第一个参数,无论这个函数是如何被调用的。 arg1, arg2, ... 当绑定函数被调用时,这些参数将置于实参之前传递给被绑定的方法。...返回值 返回由指定的this值和初始化参数改造的原函数拷贝 例1 window.color = 'red'; var o = {color: 'blue'}; function sayColor(){...func2(); 例2 注意:bind只生效一次 function f(){ return this.a; } //this被固定到了传入的对象上 var g = f.bind({a:"azerty

    2.2K10

    apply、call、bind函数的区别

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

    9510

    js原生函数之call和apply,bind

    call 和 apply call 和 apply 和 bind 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。...js原生函数中的call和apply都不陌生,这两个方法的作用相似,接受两类参数。 第一类是context(上下文),传入的参数作为执行函数的上下文,也是要传入的第一个参数。...,只是赋予了更加复杂的应用逻辑; 这里同时也是闭包的一个应用过程; bind 说了call和apply,也是要介绍一下bind的。...(tom)());//reading bind 和 call的使用方式很类似,同样接受两部分参数,上下文this和作用函数的后续参数,下面是我猜想的bind的模拟实现方法。...和call的主要区别在于,bind返回的是一个新函数,而call这是直接执行了该函数。

    89400

    JS 手写: call、apply、bind

    # call # Try it call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。...该方法的语法和作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组。...# 描述 call() 允许为不同的对象分配和调用属于一个对象的函数/方法。 call() 提供新的 this 值给当前调用的函数/方法。...call() 方法的作用和 apply() 方法类似,区别就是 call() 方法接受的是参数列表,而 apply() 方法接受的是一个参数数组。...# Try it bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。

    1.6K30

    对于bind、call、apply 区别?

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

    28420
    领券