js中的函数function
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的更多相关文章
- JS中匿名函数$(function(){ })和(function(){})()的区别
		
“$(function(){ });” Jquery语法的匿名函数,用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在: (通过这样就可以在页面加载完成时通过ajax再异步加载一些数据) “ ...
 - JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype
		
一)函数 A)JS中的函数的定义格式: function add(a,b) { var sum = a+b; document.write("两个数的和是:" + sum); // ...
 - js中的函数,Date对象,Math对象和数组对象
		
函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...
 - js中getByClass()函数
		
js中getByClass()函数进化史 对于js来说,我想每一个刚接触它的人都应该会抱怨:为什么没有一个通过class来获取元素的方法.尽管现在高版本的浏览器已经支持getElementsByCla ...
 - JS中的函数、Bom、DOM及JS事件
		
本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的 ...
 - node.js 中回调函数callback(转载),说的很清楚,看一遍就理解了
		
最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: 复制代码 代码如下: app.use(fu ...
 - JS中的函数、BOM和DOM操作
		
一.JS中的函数 [关于注释] /** [文档注释]:开头两个*.写在函数上方,在调用函数时可以看到文档上方的描述信息. */ // 单行注释 /* 多行注释 */ 1.函数的声明及调用 (1) ...
 - html css <input> javaScript .数据类型 JS中的函数编写方式 BOM总结 DOM总结
		
Day27 html css div 块标签. 特点: 独占一行,有高度和宽度 span 行元素. 特点:在同一行显示,当前行满了自动去下一行显示. 不识别高度和宽度 1.1.1.1 2.输入域标签 ...
 - 前端之js中的函数
		
函数 函数就是重复执行的代码片. 函数定义与执行 <script type="text/javascript"> // 函数定义 function ...
 
随机推荐
- AdminLTE介绍和zTree的简单使用
			
一.AdminLTE介绍 1.介绍  AdminLTE是一个开源的后台控制面板和仪表盘 WebApp 模板,是建立在Bootstrap3框架和JQuery之上的开源模板主题工具,它提供了一系列响应的 ...
 - Web开发中跨域的几种解决方案
			
同domain(或ip),同端口,同协议视为同一个域,一个域内的脚本仅仅具有本域内的权限,可以理解为本域脚本只能读写本域内的资源,而无法访问其它域的资源.这种安全限制称为同源策略. 出于安全考虑,HT ...
 - Laravel (5.5.33) 加载过程---make方法(四)
			
/** * Resolve the given type from the container. * * @param string $abstract * @return mixed */ publ ...
 - HTML和CSS网页开发基础
			
一 HTML文档结构 HTML文档结构:<html>.<head>.<title>.<body>构成HTML页面中最基本的元素. HTML常用标记:1. ...
 - [Android]异常5-throwable:java.lang.OutOfMemoryError: pthread_create
			
背景:线程初始化耗时任务 异常原因: 可能一>多个new Thread()嵌套 解决办法有: 解决一>使用Handler分离new Thread()嵌套 注: 06-30 09:12:26 ...
 - Robomongo 0.9.0 连接mongo数据库时,提示连接失败 的解决方案
			
Robomongo 0.9.0 连接mongo数据库时,提示连接失败.(IP和端口号确定是对的) 基本注意点: 1.mongodb服务打开,打开时,指定端口号,默认为27017,使用默认值,则不用指定 ...
 - The type new View.OnClickListener(){} must implement the inherited abstract method View.Onclicklis
			
public class MainActivity extends Activity { protected Button startBrew = null; @Override protected ...
 - spring+spring MVC+mybatis 框架搭建
			
1.新建一个javaWeb工程Test,创建时记得勾选web.xml文件. 2.导入需要的jar包,Mybatis所有的jar,spring所有的jar,mysql驱动包. 这里mybatis和spr ...
 - 踩过的坑:__file__、__package__和__name__
			
不说废话,直接上示例结构图 Path.py内容如下: import os path1 = os.path.dirname(os.path.abspath(__file__)) path2 = os.p ...
 - Lua中返回值的丢失问题
			
Lua中返回值的丢失问题 -- 如果函数调用所得的多个返回值是另外一个函数的最后一个参数,或者是多指派表达式中的最后一个参数时,所有返回值将被传入或使用. -- 否则只有第一个返回值被使用或指定. T ...