简单了解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中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
jquery实现横向图片轮播特效代码分享
Nov 19 Javascript
CSS3 media queries结合jQuery实现响应式导航
Sep 30 Javascript
微信小程序 Template详解及简单实例
Jan 05 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
Dec 27 Javascript
jQuery实现左右滑动的toggle方法
Mar 03 jQuery
微信小程序内拖动图片实现移动、放大、旋转的方法
Sep 04 Javascript
Element-UI踩坑之Pagination组件的使用
Oct 29 Javascript
记录一次开发微信网页分享的步骤
May 07 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
Aug 20 Javascript
js 实现watch监听数据变化的代码
Oct 13 Javascript
使用next.js开发网址缩短服务的方法
Jun 17 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
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
jquery div模态窗口的简单实例
2016/05/28 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
Node批量爬取头条视频并保存方法
2018/09/20 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
python中stdout输出不缓存的设置方法
2014/05/29 Python
深入理解Python中字典的键的使用
2015/08/19 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
python创建文本文件的简单方法
2020/08/30 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
什么是索引指示器
2012/08/20 面试题
坚定理想信念心得体会
2014/03/11 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
租房协议书样本
2014/08/20 职场文书
承诺函格式模板
2015/01/21 职场文书
转学证明范本
2015/06/19 职场文书
导游词之山东八大关
2019/12/18 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python
python基础入门之字典和集合
2021/06/13 Python
MySQL 如何设计统计数据表
2021/06/15 MySQL
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL