首页
学习
活动
专区
工具
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...: this要指向的对象,如果是null undefined,则指向window全局对象; 参数是一个数组。...obj return: 3 3. bind() 语法: fun.bind(thisArg,[arg1,arg2,…]) fun: 表示一个函数 thisArg: this要指向的对象,如果是null ...()、apply()bind()的应用 1. call() call 常用来继承,因为ES6之前没有extends,用构造函数来模拟继承。

    1.1K30

    callapply、bind的应用区别

    1. call( ) 面试中常问的Js中关于callapply、bind的问题,比如: 怎么利用callapply来求一个数组中最大或者最小值 如何利用callapply来做继承 applycall...、bind的区别主要应用场景 首先,要明白这三个函数的存在意义是什么?...所以其实他们干的事从本质上讲都是一样的动态的改变this上下文,但是多少还是有一些差别的.. ① callapply与bind的差别 callapply改变了函数的this上下文后便执行该函数,而bind...② callapply区别 他们俩之间的差别在于参数的区别callapply的第一个参数都是要改变上下文的对象,而call从第二个参数开始以参数列表的形式展现,apply则是把除了改变上下文对象的参数放在一个数组里面作为它的第二个参数...8下就只能通过循环一个个加到数组中了: for (var i = 0; i < oLis.length; i++) { ary[ary.length] = oLis[i]; } 基于IE6~8标准浏览器中的区别

    37850

    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.

    66270

    callapply

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

    79630

    对于bind、callapply 区别

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

    27920

    call apply区别是什么

    2015-07-12 15:02:21 一、方法的定义 call方法: 语法:call(thisObj,Object) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。...说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。...apply方法: 语法:apply(thisObj,[argArray]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。...如果没有提供 argArray thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。...var money = 100;都作为window对象子对象(即全局对象) myFun.apply(window,[]); //save to window.myFun.apply(window,[])

    51620

    applycall、bind函数的区别

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

    9210

    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

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

    1、关于call()apply()的疑点: applycall区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 2、语法参数分析...: applycall都能继承另外一个对象的方法属性; Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组...,它将作为参数传给Function(args-->arguments) call:apply的意思一样,只不过是参数列表不一样....()apply()示例展示 /*定义一个Person类*/ function Person(name,age) { this.name=name; this.age=age; }...分析:即我没有的方法或属性,通过call继承,我就拥有了你的方法属性,可以进行相关的操作了。

    68720

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

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

    17010

    模拟实现 call apply

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

    40920

    JavaScript中的 Call Apply

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

    59510

    快速搞懂callapplybind

    callapply callapply相信很多人用过,或者看源码看到过,在这里简单说说他们之间的关系。首先callapply都是改变this指向的api。...他的区别仅仅只是callapply的第二位参数起的差别。...(obj, arg1, arg2, arg3...); applyTest.apply(obj, [arg1, arg2, arg3]); 那么如果有一个问题,callapply之间,那个性能更高,你会怎么觉得呢...那么实际上callapply之间,其实是call的性能更好。为什么呢? 其实在底层运行上,apply在调用apply的时候,还需要对传入的第二个参数进行解构赋值。..., [].slice.call(arguments))); } } 所以bind的实现也是相当简单的,只要清楚callapply以及bind的原理,即可手写一个bind出来。

    18920
    领券