简单了解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 相关文章推荐
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
Oct 11 Javascript
使用非html5实现js板连连看游戏示例代码
Sep 22 Javascript
JS+JSP checkBox 全选具体实现
Jan 02 Javascript
JS 获取浏览器和屏幕宽高等信息代码
Mar 31 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
Dec 08 Javascript
Javascript获取表单名称(name)的方法
Apr 02 Javascript
Angular2里获取(input file)上传文件的内容的方法
Sep 05 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
Jan 08 Javascript
集成vue到jquery/bootstrap项目的方法
Feb 10 jQuery
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
Nov 27 Javascript
微信小程序拖拽排序列表的示例代码
Jul 08 Javascript
详解微信小程序轨迹回放实现及遇到的坑
Feb 02 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
C# Assembly类访问程序集信息
2009/06/13 PHP
php获取文件大小的方法
2014/02/26 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
python的id()函数解密过程
2012/12/25 Python
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
Django REST framework视图的用法
2019/01/16 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
Python对列表的操作知识点详解
2019/08/20 Python
Python日志处理模块logging用法解析
2020/05/19 Python
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
结婚邀请函范文
2014/01/14 职场文书
幼师求职自荐信
2014/05/31 职场文书
销售提升方案
2014/06/07 职场文书
社会实践活动总结范文
2014/07/03 职场文书
MySQL分库分表详情
2021/09/25 MySQL
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python