简单了解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 相关文章推荐
添加到收藏夹代码(兼容几乎所有的浏览器)
Jan 09 Javascript
JQuery 1.4 中的Ajax问题
Jan 23 Javascript
通过url查找a元素并点击
Apr 09 Javascript
js实现文章文字大小字号功能完整实例
Nov 01 Javascript
百度地图给map添加右键菜单(判断是否为marker)
Mar 04 Javascript
只需五句话搞定JavaScript作用域(经典)
Jul 26 Javascript
js实现常用排序算法
Aug 09 Javascript
几行js代码实现自适应
Feb 24 Javascript
vue服务端渲染缓存应用详解
Sep 12 Javascript
layui前端时间戳转化实例
Nov 15 Javascript
开发Node CLI构建微信小程序脚手架的示例
Mar 27 Javascript
JS轮播图的实现方法
Aug 24 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
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
Jquery获取radio选中值实例总结
2019/01/17 jQuery
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
运动会广播稿30字
2014/01/21 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js