简单了解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 相关文章推荐
兼容ie、firefox的图片自动缩放的css跟js代码分享
Jan 21 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
Sep 18 Javascript
jQuery中ready事件用法实例
Jan 19 Javascript
超级简单实现JavaScript MVC 样式框架
Mar 24 Javascript
jQuery手机拨号界面特效代码分享
Aug 27 Javascript
详解JavaScript编程中正则表达式的使用
Oct 25 Javascript
在JavaScript中调用Java类和接口的方法
Sep 07 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
Nov 15 Javascript
vue watch深度监听对象实现数据联动效果
Aug 16 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
Sep 04 Javascript
javascript匿名函数中的'return function()'作用
Oct 15 Javascript
深入学习js函数的隐式参数 arguments 和 this
Jun 24 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
1.PHP简介
2006/10/09 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
php搜索文件程序分享
2015/10/30 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
JS采用绝对定位实现回到顶部效果完整实例
2016/06/20 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
angular 服务随记小结
2019/05/06 Javascript
layui内置模块layim发送图片添加加载动画的方法
2019/09/23 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
2020/11/13 Javascript
Python获取远程文件大小的函数代码分享
2014/05/13 Python
python求crc32值的方法
2014/10/05 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
Python实现自动发送邮件功能
2021/03/02 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
生物制药毕业生自荐信
2013/10/16 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
铁路安全反思材料
2014/12/24 职场文书
佛光寺导游词
2015/02/10 职场文书
护士个人年终总结
2015/02/13 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL