浅谈javascript中的Function和Arguments


Posted in Javascript onAugust 30, 2016

javascript的Function

属性:

1、Arguments对象

2、caller

 对调用单前函数的Function的引用,如果是顶层代码调用,
 则返回null(firefox返回undefined)。
 注:只有在代码执行时才有意义

3、length

 声明函数是指定的命名参数的个数(函数定义是,定义参数的个数)

4、prototype

 一个对象,用于构造函数,这个对象定义的属性和方法
 由构造函数创建的所有对象共享。

方法:

 applay() --> applay(this,[])
 call() --> call(this,可变参数)
 toString()

javascript的Arguments对象

Arguments对象只在函数体内定义,他是一个类数组(是对象不是数组,只是有数组的一些特性)。

说明:

当一个函数被调用的时候,会为该函数创建一个Arguments对象,
局部变量arguments会自动初始化并引用那个Arguments对象(arguments是Arguments对象的引用)

该对象的属性:

1、callee

对当前正在执行的函数的引用

2、length

传递给函数参数的个数(实际传递给函数参数的个数)

arguments特性

arguments对象不能显式创建,arguments对象只有函数开始时才可用。函数的 arguments 对象并不是一个数组,访问单个参数的方式与访问数组元素的方式相同。索引 n 实际上是 arguments 对象的 0…n 属性的其中一个参数。

在javascript中,不需要明确指出参数名,就能访问它们。如:

function hi(){
if(arguments[0]=="andy"){
   return;
}
alert(arguments[0]);

arguments的length属性

含义

返回调用程序传递给函数的实际参数数目。

用法

[function.]arguments.length

其中可选项 function 参数是当前正在执行的 Function 对象的名称。

说明

当 Function 对象开始执行时,脚本引擎将 arguments 对象的 length 属性初始化为传递给该函数的实际参数数目。

js不会主动为你判断你到底给函数传了多少个参数,如果你多传了,多余的部分就没有被使用,如果你少传了,那么没传的参数值就是undefined

所以我们可以借助arguments的length属性来检测调用函数时是否使用了正确数目的实际参数,因为javascript是不会为你做这些事的

arguments 的 0...n 属性

含义

返回一个 arguments 对象中的各个参数的实际值,相应的值是由一个正在执行的函数的 arguments属性返回的。

用法

[function.]arguments[[0|1|2|...|n]]

参数

function

可选项。当前正在执行的 Function 对象的名称。

0, 1, 2, …, n

必选项。0 到 n 范围内的非负整数,其中 0 代表第一个参数而 n 代表最后一个参数。最后参数 n 的值为 arguments.length-1

说明

0 . . . n 属性所返回的值就是传递给正在执行的函数的实际值。尽管实际上并不是一个参数数组,您还是可以按照与访问数组元素的方法相同的方式访问组成 arguments 对象的各个参数。

示例

下面的例子演示了 arguments 对象的 0 . . . n 属性的用法

 

function ArgTest(){
  var s = "";
  s += "The individual arguments are: "
  for (n=0; n< arguments.length; n++){
   s += ArgTest.arguments[n];
   s += " ";
  }
  return(s);
}
print(ArgTest(1, 2, "hello", new Date()));

 arguments的callee属性

含义

表示对函数对象本身的引用,也就是所指定的 Function 对象的正文,这有利于实现无名函数的递归或者保证函数的封装性。

用法

[function.]arguments.callee

可选项 function 参数是当前正在执行的 Function 对象的名称。

说明
callee 属性是 arguments 对象的一个成员,仅当相关函数正在执行时才可用。

callee 属性的初始值就是正被执行的 Function 对象。这允许匿名的递归函数。

实例:

用递归来计算1到n的自然数之和:

 

<script>
 
  var sum=function(n){
   if(1==n) {
    return 1;
   } else {
    return n + arguments.callee(n-1);
   }
  }
  alert(sum(100));
</script>

对函数Function原型prototype的一下说明:

当通过构造函数初始化一个对象的时候,

new关键字通过调用构造函数初始化这个对象,并把新的对象 作为this关键字的值 来传递,

与此同时,new关键字还设置了这个对象的原型,一个对象的原型就是它的构造函数的prototype属性的值

(例如:a = new Date(),a对象的原型就是Date.prototype)

所有的函数都有一个prototype属性,当这个函数【被定义】的时候,prototype属性会自动创建和初始化。

prototype属性的初始化值是一个对象,并且这个对象只有一个属性,这个属性是constructor,

它指回到和原型相关联的那个构造函数。

以上这篇浅谈javascript中的Function和Arguments就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
淘宝搜索框效果实现分析
Mar 05 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
Feb 03 Javascript
js实现上传图片之上传前预览图片
Mar 25 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
Aug 01 Javascript
JavaScript中的null和undefined区别介绍
Jan 01 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
Mar 18 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
基于Node.js实现压缩和解压缩的方法
Feb 13 Javascript
React Native开发封装Toast与加载Loading组件示例
Sep 08 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
Jan 19 Javascript
layui点击按钮页面会自动刷新的解决方案
Oct 25 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
Oct 31 Javascript
javascript 中的console.log和弹出窗口alert
Aug 30 #Javascript
Laravel中常见的错误与解决方法小结
Aug 30 #Javascript
js中常用的Tab切换效果(推荐)
Aug 30 #Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
Aug 30 #Javascript
JavaScript探测CSS动画是否已经完成的方法
Aug 30 #Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
Aug 30 #Javascript
很棒的js Tab选项卡切换效果
Aug 30 #Javascript
You might like
推荐文章系统(一)
2006/10/09 PHP
用函数读出数据表内容放入二维数组
2006/10/09 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
python非递归全排列实现方法
2017/04/10 Python
Python内建模块struct实例详解
2018/02/02 Python
python图书管理系统
2020/04/05 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
对Python 数组的切片操作详解
2018/07/02 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
乌克兰在线药房:Аптека24
2019/10/30 全球购物
挖掘机司机岗位职责
2014/02/12 职场文书
高中生旷课检讨书
2014/10/08 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
2015年人事科工作总结
2015/04/28 职场文书
亲戚关系证明
2015/06/24 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
高中化学教学反思
2016/02/22 职场文书
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers