Javascript基础——不常用但很有用的js函数

来源:互联网 发布:愉此一生网络剧播放 编辑:程序博客网 时间:2024/05/29 04:02

1.1. JavaScript函数

这部分对Extjs中常用的几个JavaScript参数和函数进行说明,它们是arguments、call、applycaller、callee。这几个函数在普通的JavaScript编程中很少使用,但在Extjs的源码中却经常会碰到,所以先熟悉这几个函数对Extjs的学习有很大的帮助。

1.1.1. arguments

arguments是JavaScript函数的隐含对象,它代表正在执行的函数和调用该函数时传入的参数。arguments中存储的是调用该函数时实际传入的参数的值,而不是函数声明时所定义的参数。arguments对象只能在函数开始时才存在,不能显示地为某个函数创建该对象。

例子1:

function sayHello(name,age){

var argNum = arguments.length;//实际传入的参数个数

var defNum = sayHello.length;//函数定义的参数个数

alert('调用函数时传入'+argNum+'个参数,他们是:'+arguments[0]+','+arguments[1]);

}

sayHello('zhangsan',12);//输出“调用函数时传入2个参数,他们是:zhangsan,12”

从例子1中可以看出,如果要得到函数声明时定义的参数数量,可以使用函数的length属性(上例中的sayHello.length)即可。要得到实际传入的参数数量,则使用arguments.length即可。

1.1.2. call
1.1.3. apply
1.1.4. caller

caller对象是JavaScript函数的一个属性对象,它表示调用当前函数的函数。换句话说caller返回一个函数引用,该函数调用了当前正在执行的函数。用法如下:

functionName.caller

其中functionName是当前执行函数的函数名称。对于函数来说,caller属性只有在函数执行时才存在。如果函数是由顶层调用的,则caller为null,如果是由其它函数调用了该函数,则caller返回调用函数的反编译文本。

例子1:

function sayHello(){

if(sayHello.caller){

var ca = sayHello.caller.toString();

alert(ca);//输出调用函数test()的文本内容

}

}

function test(){

sayHello();

}

test();

例子1通过test函数调用sayHello函数,sayHello函数中的sayHello.caller返回调用函数test的反编译文本:

function test(){

sayHello();

}

1.1.5. callee

callee 属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性。

[function.]arguments.callee

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

例子1:

function sayHello(){

alert(arguments.callee);//输出函数sayHello的文本内容

alert(arguments.callee.length);//形参个数

alert(arguments.length);//实参个数

if(arguments.callee.length == arguments.length){

alert(‘形参个数与实参个数相等,可以进行计算’);

……

}

}

sayHello();

callee拥有length属性,这个属性有时候用于验证还是比较有用。arguments.length是实参长度,arguments.callee.length是形参长度,由此可以判断调用时形参长度是否和实参长度一致。