当前位置:主页 > javascript教程 > js中apply()和call()的区别与用法实例分析

解析js中apply()和call()的区别与用法

发布:2020-01-22 20:08:16 169


给大家整理一篇javascript相关的编程文章,网友居夏波根据主题投稿了本篇教程内容,涉及到js、apply()、call()、js中apply()和call()的区别与用法实例分析相关内容,已被463网友关注,涉猎到的知识点内容可以在下方电子书获得。

js中apply()和call()的区别与用法实例分析

本文实例讲述了js中apply()和call()的区别与用法。分享给大家供大家参考,具体如下:

每个函数都包括两个非继承而来的方法:apply()call()。两者用途都是在特定的作用域中调用函数,等于重新设置了函数体内this对象的值。

两者区别仅在于接收参数方式不同,apply()第一个参数是调用apply的函数运行的作用域,的第二个参数可以是Array的实例(数组),也可以是arguments对象,call()第一个参数是this的值没有变化,而其余参数都直接传递给函数(也就是逐个列举出来)。

如果要传入的是数组或arguments对象,apply会更方便。

可以看到apply()call()可以传递参数。更有用的是,两者还可以扩充函数运行的作用域:

var obj = {color:'red'};
window.color = 'blue';
function getcolor(){
  console.log(this.color)
};
getcolor.apply(obj);    //red
getcolor.apply(window);  //blue
getcolor.apply(this);   //blue

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun,测试运行结果如下:

js中apply()和call()的区别与用法实例分析

一个重要的用法:

var values = [1,2,3,4,5,4,3,2,1];
var max = Math.max.apply(Math,values);
console.log(max);     //5

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun,测试运行结果如下:

js中apply()和call()的区别与用法实例分析

这个实际上是利用apply()接收数组,方便了传参。而apply的第一个参数改为null或者空字符串均可。

此外还有bind()方法会创建一个函数的实例,其this值指向传给bind()的值:

window.color = 'red';
var o = {color:'blue'};
function sayColor(){
 console.log(this.color)
};
var objSayColor = sayColor.bind(o);
objSayColor();       //blue

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun,测试运行结果如下:

js中apply()和call()的区别与用法实例分析

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript常用函数技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


参考资料

相关文章

  • 分享jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误解决方案

    发布:2020-02-21

    今天测试偶然发现jquery.bgiframe.js在IE9环境下提示错误,于是很是好奇,想办法知道究竟,于是搜索了一下,现在与大家分享希望可以帮助你们


  • 关于MUI数字输入框实例详解

    发布:2020-01-23

    这篇文章主要为大家详细介绍了微信小程序实现MUI数字输入框效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • 关于Intellij Idea中jstl标签库的用法

    发布:2020-03-14

    这篇文章主要介绍了在Intellij Idea中使用jstl标签库的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • python使用flask与js进行前后台交互的实现方法详解

    发布:2019-11-03

    今天小编就为大家分享一篇python使用flask与js进行前后台交互的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • JS实现处理时间,年月日,星期的公共方法示例

    发布:2022-06-17

    给网友朋友们带来一篇关于javascript的教程,这篇文章主要介绍了JS实现处理时间,年月日,星期的公共方法,结合实例形式分析了javascript日期时间的转换、运算相关操作技巧,需要的朋友可以参考下


  • PyV8在Python爬虫中执行js代码的方法

    发布:2020-04-13

    PyV8是chrome用来执行javascript的引擎,据说是最快的js引擎,通过pyv8的封装,可以在python中使用。下面这篇文章主要介绍了使用PyV8在Python爬虫中执行js代码的相关资料,需要的朋友可以参考下。


  • JS根据密码输入长度提示安全条的实例方法

    发布:2019-11-25

    这篇文章主要介绍了基于JS实现根据密码长度显示安全条功能,非常不错,在一些网站上经常会遇到此功能,需要的的朋友参考下实现代码吧


  • JS布尔对象的toString() valueOf()使用用法

    发布:2020-02-03

    这篇文章主要介绍了JS的布尔对象的toString()方法和valueOf()方法,是JavaScript入门学习中的基础知识,需要的朋友可以参考下


网友讨论