简单了解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 (用setTimeout而非setInterval)
Dec 28 Javascript
js函数模拟显示桌面.scf程序示例
Apr 20 Javascript
JavaScript作用域链示例分享
May 27 Javascript
jQuery实现表单提交时判断的方法
Dec 13 Javascript
jQuery实现复选框批量选择与反选的方法
Jun 17 Javascript
javascript记住用户名和登录密码(两种方式)
Aug 04 Javascript
Java Mybatis框架入门基础教程
Sep 21 Javascript
js使用cookie记录用户名的方法
Nov 26 Javascript
基于javascript实现的快速排序
Dec 02 Javascript
JS实现随机生成10个手机号的方法示例
Dec 07 Javascript
vue+Element-ui实现分页效果实例代码详解
Dec 10 Javascript
vue+echarts实现多条折线图
Mar 21 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实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
input的focus方法使用
2010/03/13 Javascript
使用jQuery实现的掷色子游戏动画效果
2014/03/14 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
Python 元组(Tuple)操作详解
2014/03/11 Python
Python简单实现enum功能的方法
2016/04/25 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
Python tkinter常用操作代码实例
2020/01/03 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
美国在线印刷公司:PsPrint
2017/10/12 全球购物
班级活动策划书
2014/02/06 职场文书
《胡杨》教学反思
2014/02/16 职场文书
共产党员承诺书
2014/03/25 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
美术学专业求职信
2014/07/23 职场文书
学校食堂标语
2014/10/06 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
趣味运动会新闻稿
2015/07/17 职场文书
《认识钟表》教学反思
2016/02/16 职场文书