首页
学习
活动
专区
圈层
工具
发布

JavaScript中的 Call 和 Apply

apply接受两个参数,第一个参数指定了函数体内 this 对象的指向,第二个参数为一个带下标的集合,这个集合可以为数组,也可能为类数组,apply 方法把这个集合中的元素作为参数传递给被调用的函数:...在这段代码中,参数1、2、3被放在数组中一起传入func函数,它们分别对应func参数列表中的x、y、z。...当调用一个函数时,JavaScript的解释器并不会计较形参和实参在数量、类型以及顺序上的区别,JavaScript的参数在内部就是用一个数组来表示的,从这个意义上来说,apply比call的使用率更高...当使用call 或者 apply 的时候,如果我们传入的第一个参数为null,函数体内的this会指向默认的宿主对象,在浏览器中为window。 ?...另外在本博客的"JavaScript中this的理解"也用apply来修正this,代码如下: ? (2).

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

    JavaScript 中 call()、apply()、bind() 的用法

    在JavaScript 中,call、apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数调用过程中的 this 指向 1 apply Function.apply...(obj,args) apply方法接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组,它将作为参数传给Function(args-->arguments)...this.lastName; } } var person1 = { firstName: "Bill", lastName: "Gates", } person.fullName.apply...city + "," + country; } } var person1 = { firstName:"John", lastName: "Doe" } person.fullName.apply...那为什么要引入bind呢,是因为call和apply会自动执行目标函数,从而无法绑定在事件上,因为事件是我们手动触发的,而bind不会自动执行目标函数。

    1K1211

    理解JavaScript中的This,Bind,Call和Apply

    this关键词在JavaScript中是个很重要的概念,也是一个对初学者和学习其他语言的人来说晦涩难懂。在JavaScript中,this是一个对象的引用。...备注:如果你对JavaScript中得作用域概念不熟,你可以去[Understanding Variables, Scope, and Hoisting in JavaScript温习一下。...如果你不是很熟悉在浏览器中运行JavaScript代码,可以去阅读下How to Use the JavaScript Developer Console 文章。...在Understanding Variables, Scope, and Hoisting in JavaScript中,你学习到函数中的变量有自己的上下文。...总结 在这篇文章中,你学到了关于JavaScript的this,和基于隐式运行时绑定的可能具有的不同值,以及通过bind,call和apply的显示绑定。

    63140

    【译】理解JavaScript中的This,Bind,Call和Apply

    this关键词在JavaScript中是个很重要的概念,也是一个对初学者和学习其他语言的人来说晦涩难懂。在JavaScript中,this是一个对象的引用。...备注:如果你对JavaScript中得作用域概念不熟,你可以去[Understanding Variables, Scope, and Hoisting in JavaScript温习一下。...如果你不是很熟悉在浏览器中运行JavaScript代码,可以去阅读下How to Use the JavaScript Developer Console 文章。...在Understanding Variables, Scope, and Hoisting in JavaScript中,你学习到函数中的变量有自己的上下文。...总结 在这篇文章中,你学到了关于JavaScript的this,和基于隐式运行时绑定的可能具有的不同值,以及通过bind,call和apply的显示绑定。

    1K20

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

    apply()、call()和bind()方法都是Function.prototype对象中的方法,而所有的函数都是Function的实例。三者都可以改变this的指向,将函数绑定到上下文中。 1....用法 这三个方法的用法非常相似,将函数绑定到上下文中,即用来改变函数中this的指向。 2.1 普通写法 ? 2.2 call 与apply方法的用法 ?...不同之处在于,在给调用函数传递参数时,apply()是数组,call()参数是逐个列出的。 2.3 bind()的用法 ? bind方法传递给调用函数的参数可以逐个列出,也可以写在数组中。...应用场景 3.1 求数组中的最大和最小值 ? 3.2将类数组转化为数组 ? 3.3 数组追加 ? 3.4 判断变量类型 ? 3.5 利用call和apply做继承 ?...参考链接 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

    1.4K20

    JavaScript中call,apply,bind方法的使用及原理

    在JavaScript里,call(),apply(),bind()都是Function内置的三个方法, 它们的作用都是显示的绑定this的指向,三个方法的第一个参数都是this指向的对象,也就是函数在运行时执行的上下文...当我们定义一个新的对象,需要使用其他对象的方法的时候,我们不需要重新开发重复的方法逻辑,借助apply,apply,bind三个方法可以实现对这些的方法的调用。...bind:bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被bind的第一个参数指定,其余的参数将作为新函数的参数供调用时使用,第一个thisArg在setTimeout中创建一个函数时传递的原始值都会转化成...,this指向的是window apply,call两个方法只是参数形式有所不同,apply参数是一个数组,call则是参数列表版本 apply,call 则是立即调用,bind 是则返回对应函数 常见的一些应用...); // Name is cache let cacheName = cacheFun.getCacheName; cacheName(); // Name: global 在创建绑定函数的实例中,

    1.4K20

    JavaScript:prototype&apply&call

    本文链接:https://ligang.blog.csdn.net/article/details/42223855 一、JavaScript中的三种方法: function People(name)...JavaScript中定义类的步骤可以缩减为三步: 第一步,先定义一个构造函数,并设置初始化新对象的实例属性; 第二步,给构造函数的prototype对象定义实例的方法; 第三步,给构造函数定义类字段和类属性...通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性列表。javascript创建对象时采用了写时复制的理念。...五、call和apply方法 call与apply的第一个参数都是需要调用的函数对象,在函数体内这个参数就是this的值,剩余的参数是需要传递给函数的值,call与apply的不同就是call传的值可以是任意的...,而apply传的剩余值必须为数组。

    67621

    关于JavaScript中apply、call、bind的详细使用讲解

    在JavaScript中我们对函数的执行通常是直接用函数的名称加个括号就可以进行调用了,但是这样调用有一个缺点,就是函数中的this指向是默认绑定的,有时候this的指向不太符合我们的预期。...至于JavaScript中this的指向可以看我这篇文章《在JavaScript中,this的指向详细讲解》那我们想要把函数的this指向变成我们预期想的那样有什么方法吗?...这时候JavaScript中的函数apply、call、bind调用就起到作用了applyapply接受两个参数,第一个参数是this的指向,第二个参数是函数接受的参数,以==数组==的形式传入,==且当第一个参数为...null、undefined的时候,默认指向window(在浏览器中),使用apply方法改变this指向后原函数会立即执行,且此方法只是临时改变this指向一次==。...==当一个参数为null或undefined的时候,表示指向window==(在浏览器中),和apply一样,call也只是==临时改变一次this指向==,==并立即执行==。

    31410

    【优雅代码】深入浅出 妙用Javascript中apply、call、bind

    apply、call  在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。...方法),但是其他的有(本栗子中apple有say方法),我们可以借助call或apply用其它对象的方法来操作。...JavaScript 中,某个函数的参数数量是不固定的,因此要说适用条件的话,当你的参数是明确知道数量时用 call 。 而不确定的时候用 apply,然后把参数 push 进数组传递进去。...中存在一种名为伪数组的对象结构。...答案是,两次都仍将输出 3 ,而非期待中的 4 和 5 。原因是,在Javascript中,多次 bind() 是无效的。

    53220

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

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

    81570
    领券