简单了解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 相关文章推荐
如何在一个页面显示多个百度地图
Apr 07 Javascript
22点关于jquery性能优化的建议
May 28 Javascript
node.js中的http.createServer方法使用说明
Dec 14 Javascript
简单谈谈React中的路由系统
Jul 25 Javascript
关于Vue实现组件信息的缓存问题
Aug 23 Javascript
对Angular中单向数据流的深入理解
Mar 31 Javascript
Vue进度条progressbar组件功能
Apr 17 Javascript
JS中的JSON对象的定义和取值实现代码
May 09 Javascript
element-ui的回调函数Events的用法详解
Oct 16 Javascript
setTimeout与setInterval的区别浅析
Mar 23 Javascript
详解使用WebPack搭建React开发环境
Aug 06 Javascript
小程序瀑布流组件实现翻页与图片懒加载
May 19 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
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
基于jQuery的可以控制左右滚动及自动滚动效果的代码
2010/07/25 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
node.js不得不说的12点内容
2014/07/14 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
js实现全选和全不选功能
2020/07/28 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
python中文件变化监控示例(watchdog)
2017/10/16 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
J2EE面试题集锦(附答案)
2013/08/16 面试题
销售总监工作职责
2013/11/21 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
《颐和园》教学反思
2014/02/26 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
捐资助学感谢信
2015/01/21 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android
人民币符号
2022/02/17 杂记