简单了解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实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
Apr 20 Javascript
js的with语句使用方法
Sep 21 Javascript
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
Jan 13 Javascript
JavaScript中的style.cssText使用教程
Nov 06 Javascript
基于JavaScript代码实现微信扫一扫下载APP
Dec 30 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
Jan 08 Javascript
当jquery ajax遇上401请求的解决方法
May 19 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
Feb 08 Javascript
微信小程序实时聊天WebSocket
Jul 05 Javascript
Node.js log4js日志管理详解
Jul 31 Javascript
vue实现在线学生录入系统
May 30 Javascript
vue 使用async写数字动态加载效果案例
Jul 18 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
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
javascript 小型动画组件与实现代码
2010/06/02 PHP
php 邮件发送问题解决
2014/03/22 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
斜45度寻路实现函数
2009/08/20 Javascript
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
React组件生命周期详解
2017/07/03 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
python 异步async库的使用说明
2020/05/04 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
工作失职检讨书范文
2014/01/16 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
降价通知函
2015/04/23 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书