简单了解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代码
May 03 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
Dec 06 Javascript
jQuery中:contains选择器用法实例
Dec 30 Javascript
JS获取时间的方法
Jan 21 Javascript
理解Javascript图片预加载
Feb 23 Javascript
20分钟轻松创建自己的Bootstrap站点
May 12 Javascript
文件上传的几个示例分享【推荐】
Dec 16 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
Feb 22 Javascript
你有必要知道的10个JavaScript难点
Jul 25 Javascript
node.js学习之事件模块Events的使用示例
Sep 28 Javascript
django使用channels2.x实现实时通讯
Nov 28 Javascript
详解vue-router导航守卫
Jan 19 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蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
JS 实现完美include载入实现代码
2010/08/05 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
使用Vue-Router 2实现路由功能实例详解
2017/11/14 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
python导入时小括号大作用
2017/01/10 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
python版本的仿windows计划任务工具
2018/04/30 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
大学生饮食连锁店创业计划书
2014/01/17 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
MySQL基础(二)
2021/04/05 MySQL