js的function对象在调用过程中具有一个arguments的属性,它是由脚本解释器创建的(这也是arguments创建的唯一方式)。

arguments属性能够看作是一个Array对象,它有length属性,能够通过序号訪问每个參数,并且通过argument的callee属性能够获取对正在运行的Function对象的引用。例如以下:

function factorial(n){
if(n<=n){
return 1;
}else{
return n*arguments.callee(n-1);
}
}
alert(factorial(5));

上面使用了callee属性完毕了一个递归的算法。

Function的还有一个属性是caller,它指向正在调用当前函数的父函数对象。

利用callee和caller属性,能够非常easy实现对堆栈的遍历,如:

function fool(v1){
foo2(v1,v2,v3);
}
function foo2(v1,v2){
foo3(v1,v2,v2*v2);
} function foo3(v1,v2,v3){
var foo=argument.callee;
while(foo&&(foo!=window)){
document.writeln('<br>调用參数:<br>','-------------------------------<br>'); var args=foo.argument;argn=args.length;
for(var 1=0;i<arg;i++){
document.writeln('args[',i,']:',args[i],'<br>');
}
document.writeln('<br>');
foo=foo.caller;
}
}
foo(5);

Function是js中一个非常特殊的对象,其特殊体如今他的多重身份上。如:

//function作为类的声明和实现
function ClassA(){
this.prop1="prop1";
this.prop2="prop2";
}
//function作为构造函数
var obj=new CalssA(); //输出true,function作为类引用
alert(obj instanceof CalssA);

Function能够声明普通函数。这和其它语言的概念是一样的,但Function还能够用于类的声明和实现,对象的构造函数以及类的引用。上面的代码中通过functionkeyword声明了ClassA类,并通过thiskeyword声明了两个属性prop1和prop2,然后在创建obj对象时,ClassA()由起到了对象构造函数的作用;最后代码中使用instanceofkeyword推断obj对象是否是ClassA类的实例,此时ClassA又起到了类引用的作用。

js中的函数function的更多相关文章

  1. JS中匿名函数$(function(){ })和(function(){})()的区别

    “$(function(){ });” Jquery语法的匿名函数,用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在: (通过这样就可以在页面加载完成时通过ajax再异步加载一些数据) “ ...

  2. JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype

    一)函数 A)JS中的函数的定义格式: function add(a,b) { var sum = a+b; document.write("两个数的和是:" + sum); // ...

  3. js中的函数,Date对象,Math对象和数组对象

    函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...

  4. js中getByClass()函数

    js中getByClass()函数进化史 对于js来说,我想每一个刚接触它的人都应该会抱怨:为什么没有一个通过class来获取元素的方法.尽管现在高版本的浏览器已经支持getElementsByCla ...

  5. JS中的函数、Bom、DOM及JS事件

    本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的 ...

  6. node.js 中回调函数callback(转载),说的很清楚,看一遍就理解了

    最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: 复制代码 代码如下: app.use(fu ...

  7. JS中的函数、BOM和DOM操作

     一.JS中的函数 [关于注释] /** [文档注释]:开头两个*.写在函数上方,在调用函数时可以看到文档上方的描述信息. */   // 单行注释 /* 多行注释 */ 1.函数的声明及调用 (1) ...

  8. html css <input> javaScript .数据类型 JS中的函数编写方式 BOM总结 DOM总结

    Day27  html css div 块标签. 特点: 独占一行,有高度和宽度 span 行元素. 特点:在同一行显示,当前行满了自动去下一行显示. 不识别高度和宽度 1.1.1.1 2.输入域标签 ...

  9. 前端之js中的函数

    函数 函数就是重复执行的代码片.   函数定义与执行 <script type="text/javascript">     // 函数定义     function ...

随机推荐

  1. java定时器和实时查询数据库

    定时器: Timer timer = new Timer();                    timer.schedule(new TimerTask() {                  ...

  2. 字符串String的理解

    1.String是一个final的类型 即不可被继承修改,一经生成不可改变.所以在代码中使用String s  = s1 + s2;的时候,执行完之后s所指向的是一个新生成的对象,这里有个地方值得注意 ...

  3. 把多种验证规则用到一个model上

    基于标记特性的Model验证,真的太棒了,与jquery validate结合后激情四射,有木有,一句话完成前后端验证.简直让人秒爱... 但是爱是爱了,生活中总会有些小摩擦,这不问题来了:看图中那个 ...

  4. 01--SQLite学习网站参考

    1.   SQLite基本操作 见我的02—SQLite一步到位 sqlite3编程笔记 . http://blog.csdn.net/wl_haanel/article/details/623141 ...

  5. Python os模块和time模块 day4

    一.os模块 print(os.listdir(r'/Users/smh/Desktop/整理'))#os.listdir() 列出某个目录下面的文件夹/文件 print(os.path.isfile ...

  6. 【LeetCode】2、Add Two Numbers

    题目等级:Medium 题目描述:   You are given two non-empty linked lists representing two non-negative integers. ...

  7. idea和eclipse互相导入方法

    1.eclipse maven项目导入idea 只需要在pom.xml文件中加入如下图 为了加载项目里的一些配置文件(例如.xml和.properties文件) 2.idea maven 项目导入ec ...

  8. Django URL(路由系统)

    Django URL Django 1.11版本 URLconf官方文档 URL配置(URLconf)就像 Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的 ...

  9. 34.分组聚合操作—bucket

    主要知识点: 学习聚合知识     一.准备数据     1.家电卖场案例背景建立index 以一个家电卖场中的电视销售数据为背景,来对各种品牌,各种颜色的电视的销量和销售额,进行各种各样角度的分析 ...

  10. 渗透实战(周六):Hydra&Metasploit暴力破解SSH登录口令

    一. SSH服务开启前基础配置 1.1 修改配置文件