简单了解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新手语法小结
Jun 15 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
Sep 14 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
Jun 13 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
Jun 10 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
Jan 25 jQuery
如何以Angular的姿势打开Font-Awesome详解
Apr 22 Javascript
create-react-app安装出错问题解决方法
Sep 04 Javascript
vue中slot(插槽)的介绍与使用
Nov 12 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
Feb 27 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
Nov 04 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
Nov 13 Javascript
vue+axios 拦截器实现统一token的案例
Sep 11 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写的求多项式导数的函数代码
2012/07/04 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
thinkphp关于简单的权限判定方法
2017/04/03 PHP
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
python正则分析nginx的访问日志
2017/01/17 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
Python语言进阶知识点总结
2019/05/28 Python
python实现堆排序的实例讲解
2020/02/21 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
python基于opencv 实现图像时钟
2021/01/04 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
音乐系毕业生自荐信
2013/10/27 职场文书
保密普查工作实施方案
2014/02/25 职场文书
股东合作协议书
2014/04/14 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
教师三严三实心得体会
2014/10/11 职场文书
财产保全担保书
2015/01/20 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
酒店员工管理制度
2015/08/05 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
4种方法python批量修改替换列表中元素
2022/04/07 Python
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript