javascript的函数-重点介绍callee,call和apply

来源:互联网 发布:线切割软件 编辑:程序博客网 时间:2024/05/06 09:15

一、创建函数的2中方法

1、方法1

function box(num1,num2){  //创建函数的方式1return num1+num2;}
2、方法2
var box1 = function(num1,num2){ //创建函数的方式2return num1+num2;}

二、函数作为参数传递

<span style="white-space:pre"></span>function box2(fun,num){  //函数作为参数传递return fun(num)+num;}function box3(num){return num+100;}var num = 12;alert(box2(box3,num));
三、使用callee方法,配合arguments使用

1、传统的递归方式,使用名字来递归的方式

function box4(num){  //递归调用的方式1if(num==0){return 0;}return num+box4(num-1);}alert(box4(10));

2、使用callee方式

function box5(num){ //采用arguments.callee调用自身,可以避免函数名字变化if(num==0){return 0;}return num+arguments.callee(num-1);}alert(box5(10));

四、length方法

<span style="white-space:pre"></span>function box6(num1,num2){}alert(box6.length); //返回函数参数的个数

五、使用call和apply方法

1、call可以用来改变对象的中的this

function add(a,b){alert(this);  //默认this是window}function sub(a,b){}add(3,1);  // 弹出[object window]add.call(sub,3,1); //弹出  function sub(a,b){}; 使用call可以修改扩展函数赖以运行的作用域

2、列子(该列子是google来的,觉得不错)

function Animal(){this.name = 'Animal';this.showName = function(){alert(this.name);}}function Cat(){this.name = 'Cat';}var animal = new Animal();var cat = new Cat();animal.showName.call(cat); //传递的this为cat,所以调用返回的是cat对应的'Cat'
3、apply和call功能是一样的,就在传递参数有所区别

function add1(a,b){alert(this);}function add2(a,b){add1.apply(this,[a,b]);//add1.apply(this,arguments);}function sub(a,b){}add1(1,2);add1.apply(sub,[1,2]);








0 0
原创粉丝点击