iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >javascript中call和apply有哪些区别
  • 735
分享到

javascript中call和apply有哪些区别

2024-04-02 19:04:59 735人浏览 八月长安
摘要

今天小编给大家分享一下javascript中call和apply有哪些区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收

今天小编给大家分享一下javascript中call和apply有哪些区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

在JavaScript中,call()方法和apply()方法的作用相同,区别在于接收参数的方式不同;在使用call()方法时,传递给函数的参数必须逐个列举出来,使用apply()时,传递给函数的是参数数组

教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。

javascript中call和apply有什么区别

call() 方法调用一个函数, 其具有一个指定的this值和分别地提供的参数(参数的列表)。

  注意:该方法的作用和 apply() 方法类似,只有一个区别,就是call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组。

  语法

fun.call(thisObj[, arg1[, arg2[, ...]]])

    定义:调用一个对象的一个方法,以另一个对象替换当前对象。

    说明:

      call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。

      如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

  参数

    thisObj

    在fun函数运行时指定的this值。需要注意的是,指定的this值并不一定是该函数执行时真正的this值,如果这个函数处于非严格模式下,则指定为null和undefined的  

    this值会自动指向全局对象(浏览器中就是window对象),同时值为原始值(数字,字符串,布尔值)的this会指向该原始值的自动包装对象。

    arg1, arg2, ...

    指定的参数列表。

返回值

返回结果包括指定的this值和参数。

apply()

apply() 方法调用一个函数, 其具有一个指定的this值,以及作为一个数组(或类似数组的对象)提供的参数。

语法

fun.apply(thisObj, [argsArray])

  定义:应用某一对象的一个方法,用另一个对象替换当前对象。

  说明:

    如果 argsArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。

    如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

参数

  thisObj

    在 fun 函数运行时指定的 this 值。需要注意的是,指定的 this 值并不一定是该函数执行时真正的 this 值,如果这个函数处于非严格模式下,则指定

    为 null 或 undefined 时会自动指向全局对象(浏览器中就是window对象),同时值为原始值(数字,字符串,布尔值)的 this 会指向该原始值的自动包装对象。

  argsArray

    一个数组或者类数组对象,其中的数组元素将作为单独的参数传给 fun 函数。如果该参数的值为null 或 undefined,则表示不需要传入任何参数。从ECMAScript 5

     开始可以使用类数组对象。

总结

两者作用一致,都是把obj(即this)绑定到thisObj,这时候thisObj具备了obj的属性和方法。或者说thisObj『继承』了obj的属性和方法。

唯一区别是apply接受的是数组参数,call接受的是连续参数。

call()方法和apply()方法的作用相同,他们的区别在于接收参数的方式不同。对于call(),第一个参数是this值没有变化,变化的是其余参数都直接传递给函数。(在使用call()方法时,传递给函数的参数必须逐个列举出来。使用apply()时,传递给函数的是参数数组)如下代码做出解释:

function add(c, d){
    return this.a + this.b + c + d;
}
var o = {a:1, b:3};
add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16
add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34 

call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。因为 JavaScript 的函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。

二者的作用完全一样,只是接受参数的方式不太一样。例如,有一个函数 fun 定义如下:

var fun = function(arg1, arg2) {};

就可以通过 fun.call(this, arg1, arg2); 或者 fun.apply(this, [arg1, arg2]); 来调用。其中 this 是你想指定的上下文,他可以任何一个 JavaScript 对象(JavaScript 中一切皆对象),call 需要把参数按顺序传递进去,而 apply 则是把参数放在数组里。

JavaScript 中,某个函数的参数数量是不固定的,因此要说适用条件的话,当你的参数是明确知道数量时,用 call,而不确定的时候,用 apply,然后把参数 push 进数组传递进去。当参数数量不确定时,函数内部也可以通过 arguments 这个数组来遍历所有的参数。

以上就是“javascript中call和apply有哪些区别”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网html频道。

--结束END--

本文标题: javascript中call和apply有哪些区别

本文链接: https://www.lsjlt.com/news/88761.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • javascript中call和apply有哪些区别
    今天小编给大家分享一下javascript中call和apply有哪些区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收...
    99+
    2022-10-19
  • JS中call和apply的区别
    一、参数传递方式不同 call方法接受的是若干个参数列表,名列前茅个参数表示要改变上下文的对象,后面的参数表示要传递给函数的参数。 apply方法接收的是两个参数,名列前茅个参数表示要改变上下文的对象,第二个参数则是一个包含多个...
    99+
    2023-10-29
    区别 JS call
  • JavaScript中call,apply,bind的区别与实现
    目录区别call实现apply实现bind实现bind 返回的函数 作为普通函数调用 代码实现bind 返回的函数 作为构造函数调用bind代码最终实现区别 call、apply、b...
    99+
    2022-11-13
  • 再谈JavaScript中bind、call、apply三个方法的区别与使用方式
    call的基本使用 var ary = [12, 23, 34]; ary.slice(); 以上两行简单的代码的执行过程为:ary这个实例通过原型链的查找机制找到Array.pro...
    99+
    2022-11-13
  • javascript和java区别有哪些
    这篇文章主要介绍javascript和java区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!区别:1、JavaScript由浏览器解释执行,Java程序则是编译执行。2、JavaScript提供丰富的内置对...
    99+
    2023-06-15
  • javascript和java有哪些区别
    这篇文章主要介绍了javascript和java有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。区别:1、Java需要在JDK或JRE的JVM上运行;而JavaScr...
    99+
    2023-06-14
  • javascript和actionscript有哪些区别
    小编给大家分享一下javascript和actionscript有哪些区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2022-10-19
  • node.js和javascript有哪些区别
    这篇文章主要介绍了node.js和javascript有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 ...
    99+
    2022-10-19
  • c#和JavaScript有哪些区别
    这篇文章将为大家详细讲解有关c#和JavaScript有哪些区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 区别:1、JavaScript...
    99+
    2022-10-19
  • java和javascript有哪些区别
    小编给大家分享一下java和javascript有哪些区别,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。区...
    99+
    2023-06-14
  • Ajax和JavaScript有哪些区别
    本篇内容介绍了“Ajax和JavaScript有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!javascript是一种在浏览器端执...
    99+
    2023-06-08
  • javascript中var和let有哪些区别
    这篇文章主要介绍了javascript中var和let有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 ...
    99+
    2022-10-19
  • JavaScript中null和undefined有哪些区别
    小编给大家分享一下JavaScript中null和undefined有哪些区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!nu...
    99+
    2022-10-19
  • python中apply和transform有什么区别
    这篇文章将为大家详细讲解有关python中apply和transform有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python是什么意思Python是一种跨平台的、具有解释性、...
    99+
    2023-06-15
  • javascript和java的区别有哪些
    这篇文章主要介绍了javascript和java的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Java 和 JavaScript 不同之处: ...
    99+
    2023-06-27
  • javascript和asp的区别有哪些
    这篇文章主要介绍javascript和asp的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 区别:1、ASP是一种服务器端脚本语言,而Java...
    99+
    2022-10-19
  • c++和javascript的区别有哪些
    本篇文章为大家展示了c++和javascript的区别有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。区别:1、C++是静态语言,而javascript是动态语...
    99+
    2022-10-19
  • xml和javascript的区别有哪些
    这篇文章主要讲解了“xml和javascript的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“xml和javascript的区别有哪些”吧! ...
    99+
    2022-10-19
  • PHP和JavaScript的区别有哪些
    PHP和JavaScript的区别有:1、PHP中实参数小于形参就会报错,而JavaScript中没有限制;2、两者使用的字符串连接符不同,PHP使用“.”,而JavaScript使用“+”;3、数组相加的方法不同,PHP使用“+”,而Ja...
    99+
    2022-10-10
  • javascript和es的区别有哪些
    这篇文章主要介绍“javascript和es的区别有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript和es的区别有哪些”文章能帮助大家解决问题...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作