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 ...
随机推荐
- 为什么现在改用int.TryParse了
以前一直用 int.Parse(x)或者 Convert.ToInt64(x),后来项目中发现如果x变量的值为null是,就报错了,哪怕我这样写 int.Parse(x=x??"0" ...
- Spring boot中的定时任务(计划任务)
从Spring3.1开始,计划任务在Spring中实现变得异常的简单.首先通过配置类注解@EnableScheduling来开启对计划任务的支持,然后再要执行的计划任务的方法上注释@Scheduled ...
- 商业计算中Java高精度计算BigDecimal类
<Effective Java> 第48条:如果需要精确的答案,请避免使用float和double. 如果我们编译运行下面这个程序会看到什么?public class Test{ p ...
- 关于idea failed to start SceneBuilder 的解决方法
问题描述: javaFx无法启动SceneBuilder. 问题原因: SceneBuilder不正当配置. 解决方法:1. 下载SceneBuilder https://www.oracle.c ...
- Android项目实战_手机安全卫士splash界面
- 根据代码的类型组织包结构 1. 界面 com.hb.mobilesafe.activities 2. 服务 com.hb.mobilesafe.services 3. 业务逻辑 com.hb.mo ...
- C# 窗体 切换、重复显示等遗留问题解决(第五天)
一.解决同一窗体多次点击重复显示BUG (1)点击弹出学校窗体 #region 弹出学校窗体 /// <summary> /// 弹出学校窗体 /// </summary> / ...
- dubbo之本地伪装
本地伪装 本地伪装 1 通常用于服务降级,比如某验权服务,当服务提供方全部挂掉后,客户端不抛出异常,而是通过 Mock 数据返回授权失败. 在 spring 配置文件中按以下方式配置: <dub ...
- 18清明校内测试T3
扫雷(mine) Time Limit:1000ms Memory Limit:128MB 题目描述 rsy最近沉迷于一款叫扫雷的游戏. 这个游戏是这样的.一开始网格上有n*m个位置,其中有一些位 ...
- 17.使用原生cross-fiels技术解决搜索弊端
主要知识点: 原生cross-fiels的用法 原生cross-fiels解决三个弊端 一.原生cross-fiels的用法 GET /forum/article/_search { ...
- 66.零停机下reindex
主要知识点: 理解reindex的使用场景和必要性 学会reindex 一.理解reindex的使用场景和必要性 假设:在某一个index中依靠dynamic mapping插入数据, ...