简单了解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获得地址栏参数的两种方法
Nov 08 Javascript
JS 常用校验函数
Mar 26 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
Jul 17 Javascript
用Javascript评估用户输入密码的强度实现代码
Nov 30 Javascript
jquery+json实现数据列表分页示例代码
Nov 15 Javascript
js抽奖实现随机抽奖代码效果
Dec 02 Javascript
JQuery实现的图文自动轮播效果插件
Jun 19 Javascript
js+ajax实现获取文件大小的方法
Dec 08 Javascript
Bootstrap入门教程一Hello Bootstrap初识
Mar 02 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
May 20 Javascript
微信小程序停止其他视频播放当前视频的实例代码
Dec 25 Javascript
解决vue下载后台传过来的乱码流的问题
Dec 05 Vue.js
如何使用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实现paypal整合方法
2010/11/28 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
一些不错的js函数ajax
2008/08/20 Javascript
flexigrid 参数说明
2010/11/23 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
2017/12/20 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
python3 shelve模块的详解
2017/07/08 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
Python常用的json标准库
2019/02/19 Python
python实现批量注册网站用户的示例
2019/02/22 Python
对Django外键关系的描述
2019/07/26 Python
详解Python3 pickle模块用法
2019/09/16 Python
python随机生成库faker库api实例详解
2019/11/28 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
python 装饰器的基本使用
2021/01/13 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
地球一小时宣传标语
2014/06/24 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
反腐倡廉观后感
2015/06/08 职场文书