浅谈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 相关文章推荐
Javascript代码在页面加载时的执行顺序介绍
May 03 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
Oct 25 Javascript
jquery 表格排序、实时搜索表格内容(附图)
May 19 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
Apr 26 Javascript
修改Jquery Dialog 位置的实现方法
Aug 26 Javascript
Bootstrap模态窗口源码解析
Feb 08 Javascript
bootstrap multiselect下拉列表功能
Aug 22 Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 Javascript
Angular6 写一个简单的Select组件示例
Aug 20 Javascript
Vue封装Axios请求和拦截器的步骤
Sep 16 Javascript
JavaScript实现网页跨年倒计时
Dec 02 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
PHP 数据库树的遍历方法
2009/02/06 PHP
php 引用(&amp;)详解
2009/11/20 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
详解YII关联查询
2016/01/10 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
jquery遍历checkbox介绍
2014/02/21 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python3.0 字典key排序
2008/12/24 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
python爬虫实战之最简单的网页爬虫教程
2017/08/13 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
美德好少年主要事迹
2014/01/29 职场文书
开学典礼感言
2014/02/16 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
水电维修专业推荐信
2014/09/06 职场文书
食品安全责任书范本
2015/05/09 职场文书
党员干部学习心得体会
2016/01/23 职场文书