摘要:和方法大作用致相同,不同的方法接受的参数,必须要明确所有要处理的参数,也就是说,参数必须要逐个列举,而方法可以选择数组作为参数,因此可以在具体的环境中,看看是选择还是方法。
在函数内部有着一个名叫arguments的类数组对象,内部包含着传入函数的所有参数,在arguments对象中,有一个名叫callee的属性,其作用可见下面这个阶乘的栗子:
function factorial(num){ if(num<=1){ return 1; }else{ return num*factorial(num-1); //这里也可以写成如下方式 return num*arguments.callee(num-1); } } console.log(factorial(5))//120
可以看到的是,arguments.callee这个属性作为一个指针指向了拥有arguments对象的函数,也可以认为是当前正在执行的函数,而且可以消除与函数名factorial的耦合,不过值得注意的是,在ES5的严格模式下,调用arguments.callee方法会报错。
函数内部还有一个对象,就是我们所熟悉的this对象,this对象引用的是函数执行的环境对象,简单来说,this总是指向函数的直接调用者,而非间接调用者,在对象中,如果有new关键字,this指向new出来的那个对象。
在函数对象中,有个属性名为caller,这个属性作为一个引用,保存着调用当前函数的其他函数的引用,如下
(function(){ bar();//function (){bar();} })(); function bar(){ console.log(bar.caller)//arguments.callee.caller }
可以看到的是,匿名函数内部调用了bar函数,在bar函数内部,因为 bar.calller指向了调用bar的匿名函数,所以执行bar.caller就等于匿名函数的源代码,同callee一样的是,在ES5中访问caller属性会报错。
函数内部除了以上容易混淆的属性以外,还有些方法有时候也会让人比较困惑,例如call跟apply,show the code
function add(a,b){ return a+b; } function foo(a,b){ console.log(add.call(this,a,b)) } function bar(a,b){ console.log(add.apply(this,[a,b])) } foo(20,20)//40 bar(20,20)//40
可以看到的是,call和apply两个方法作用都是在特定的作用域上面调用函数,换句话说,就是改变函数体内this指向,在foo和bar函数中,我们利用call和apply将函数的this值绑定到add函数上,因此它们便可以对内部的参数执行add函数里面的加法操作。
call和apply方法大作用致相同,不同的方法接受的参数,call必须要明确所有要处理的参数,也就是说,参数必须要逐个列举,而apply方法可以选择数组作为参数,因此可以在具体的环境中,看看是选择call还是apply方法。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/84268.html
摘要:中函数是一等公民,所有的函数实际上是一个对象,与其他引用类型一样拥有着属性和方法,也可以被外界或者自身调用,也可以像传递参数一样将函数传递给另一个函数。中函数没有重载的概念,当定义两个同名函数的时候,前一个函数会被覆盖掉,举个栗子。 JavaScript中函数是一等公民,所有的函数实际上是一个Function对象,与其他引用类型一样拥有着属性和方法,也可以被外界或者自身调用,也可以像传...
摘要:另外如果为负数,则表示从字符串尾部开始算起。将要搜寻的子字符串。从当前字符串的哪个索引位置开始搜寻子字符串默认为。否则则会返回一个数组,数组中存放所有符合要求的子字符串,并且没有和属性。 原文链接 JavaScript 字符串用于存储和处理文本。因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种...
摘要:极简爬虫攻防战纪要爬虫是构建搜索引擎的基础负责抓取网页信息并对网页识别分类及过滤。爬虫方终于锁定了第一场战役的胜局由于断崖式技术的出现,反爬方在浏览器识别战役上望风披靡。经过反爬方的精心运作,逐渐有效削弱了敌方的攻势。 极简爬虫攻防战纪要 爬虫是构建搜索引擎的基础, 负责抓取网页信息并对网页识别、分类及过滤。我们熟识的电商、搜索、新闻及各大门户网站都有强大的爬虫集群在每...
摘要:流程创建一个文件获取当前的活动标签通过行列坐标获取单元格,并向其插入数据这里有种方式生成文件并输入代码预览等价于除非是根目录设置当前脚本所在目录实例化类获取当前活动标签填充数据方式一姓名性别年龄射可可男男男填充数 流程 创建一个excel文件 获取当前的活动sheet标签 通过行列坐标获取单元格,并向其插入数据(这里有2种方式) 生成文件并输入showImg(https://seg...
摘要:更多资源请文章转自月份前端资源分享的作用数组元素随机化排序算法实现学习笔记数组随机排序个变态题解析上个变态题解析下中的数字前端开发笔记本过目不忘正则表达式聊一聊前端存储那些事儿一键分享到各种写给刚入门的前端工程师的前后端交互指南物联网世界的 更多资源请Star:https://github.com/maidishike... 文章转自:https://github.com/jsfr...
阅读 709·2021-11-24 10:19
阅读 1081·2021-09-13 10:23
阅读 3406·2021-09-06 15:15
阅读 1751·2019-08-30 14:09
阅读 1655·2019-08-30 11:15
阅读 1819·2019-08-29 18:44
阅读 901·2019-08-29 16:34
阅读 2437·2019-08-29 12:46