简单了解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 版元素拖拽原型代码
Apr 25 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
超炫的jquery仿flash导航栏特效
Nov 11 Javascript
JS实现的打字机效果完整实例
Jun 20 Javascript
JavaScript ES6的新特性使用新方法定义Class
Jun 28 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
Oct 28 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
Nov 10 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
Nov 15 Javascript
简单实现js放大镜效果
Jul 24 Javascript
select自定义小三角样式代码(实用总结)
Aug 18 Javascript
layui文件上传控件带更改后数据传值的方法
Sep 23 Javascript
js中延迟加载和预加载的具体使用
Jan 14 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开发中常用的三个表单验证函数使用小结
2010/03/03 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
Django中信号signals的简单使用方法
2019/07/04 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
Python wordcloud库安装方法总结
2020/12/31 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
师范生实习的个人自我鉴定
2013/10/20 职场文书
计算机专业毕业生的自我评价
2013/11/18 职场文书
小班下学期评语
2014/05/04 职场文书
交通安全责任书范本
2014/07/24 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server