简单了解JavaScript arguement原理及作用


Posted in Javascript onMay 28, 2020

问题

var length = 10;

function fn(){
  alert(this.length);
}
var obj = {
  length: 5,
  method: function(fn) {
   arguments[0]()
  }
}
obj.method(fn);//1

这段代码中的arguments[0]()是第一个参数?带一对小括号是什么意思?

理解

我们可以先从最后调用obj.method(fn)开始理解。

1.obj是对象,method()是obj的方法,fn是method()的参数,fn是函数的名,他引用对应的函数。arguments是JavaScript的一个内置对象。

An Array-like object corresponding to the arguments passed to a function.
The arguments object is a local variable available within all functions; arguments as a property of Function can no longer be used. Description:You can refer to a function‘s arguments within the function by using the arguments object. This object contains an entry for each argument passed to the function, the first entry's index starting at 0.

2.arguments是用来取得method(fn)的参数的类数组,在这里也就是fn,即arguments[0]===fn或arguments.0===fn(0就是arguments的一个属性)。所以arguments[0]()就等于fn()。

是不是到这里要开始风中凌乱了,this.length究竟是指向那个对象呢? 可以这样理解:

arguments = {
 0: fn, //也就是 functon() {alert(this.length)} 
 1: 第二个参数, //没有 
 2: 第三个参数, //没有
 ..., 
 length: 1 //只有一个参数
}

最后,这个1就是arguments.length,也就是本函数参数的个数。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
ExtJS实现文件下载的方法实例
Nov 09 Javascript
jquery代码实现多选、不同分享功能
Jul 31 Javascript
javaScript数组迭代方法详解
Apr 14 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
Jul 21 Javascript
JavaScript如何实现跨域请求
Aug 05 Javascript
AngularJS  ng-table插件设置排序
Sep 21 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
Nov 18 Javascript
JS正则表达式修饰符global(/g)用法分析
Dec 27 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
Jul 17 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
Aug 12 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 Javascript
typescript配置alias的详细步骤
Aug 12 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
May 28 #Javascript
js实现轮播图特效
May 28 #Javascript
JS写滑稽笑脸运动效果
May 28 #Javascript
Python版实现微信公众号扫码登陆
May 28 #Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
May 28 #Javascript
原生js实现五子棋游戏
May 28 #Javascript
Vue微信公众号网页分享的示例代码
May 28 #Javascript
You might like
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
express如何使用session与cookie的方法
2018/01/30 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
Javascript实现鼠标点击冒泡特效
2019/12/24 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
Django CBV类的用法详解
2019/07/26 Python
解决python 文本过滤和清理问题
2019/08/28 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
Python logging模块原理解析及应用
2020/08/13 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
简历中求职的个人自我评价
2013/12/03 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
医学生自荐信范文
2015/03/05 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python
MySQL数据库查询之多表查询总结
2022/08/05 MySQL