简单了解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 相关文章推荐
jQuery 1.2.x 升? 1.3.x 注意事项
May 06 Javascript
document.write()及其输出内容的样式、位置控制
Aug 12 Javascript
js中for in语句的用法讲解
Apr 24 Javascript
js+html5实现canvas绘制简单矩形的方法
Jun 05 Javascript
AngularJS+Node.js实现在线聊天室
Aug 28 Javascript
javascript使用Promise对象实现异步编程
Mar 01 Javascript
JavaScript实现Java中Map容器的方法
Oct 09 Javascript
Bootstrap风格的zTree右键菜单
Feb 17 Javascript
webpack学习--webpack经典7分钟入门教程
Jun 28 Javascript
AngularJs ng-change事件/指令的用法小结
Nov 01 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
Mar 21 Javascript
Vue.js实现表格渲染的方法
Sep 07 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
使用PHP计算两个路径的相对路径
2013/06/14 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
用python写asp详细讲解
2013/12/16 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
python学习笔记之多进程
2020/08/06 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
python中spy++的使用超详细教程
2021/01/29 Python
css3学习心得分享
2013/08/19 HTML / CSS
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
C++的几个面试题附答案
2016/08/03 面试题
大学新生军训个人的自我评价
2013/10/03 职场文书
高校毕业生自我鉴定
2013/10/27 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
社区义诊活动总结
2014/04/30 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
会议营销主持词
2015/07/03 职场文书