简单了解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 函数调用规则
Sep 14 Javascript
跟着Jquery API学Jquery之一 选择器
Apr 07 Javascript
JQuery1.6 使用方法三
Nov 23 Javascript
基于JavaScript怎么实现让歌词滚动播放
Nov 03 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
Jul 09 Javascript
基于Vuejs框架实现翻页组件
Jun 29 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
Dec 26 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
Dec 03 Javascript
Swiper.js实现移动端元素左右滑动
Sep 08 Javascript
微信小程序 导入图标实现过程详解
Oct 11 Javascript
JS合并两个数组的3种方法详解
Oct 24 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 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
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
使用js画图之画切线
2015/01/12 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
python随机生成指定长度密码的方法
2015/04/04 Python
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
python下载图片实现方法(超简单)
2017/07/21 Python
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
Python3实现转换Image图片格式
2018/06/21 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
通过实例简单了解Python sys.argv[]使用方法
2020/08/04 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
80后婚前协议书范本
2014/10/24 职场文书
开学第一周总结
2015/07/16 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
Nginx反向代理、重定向
2022/04/13 Servers