call(),apply()方法和类数组对象arguments
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <script type="text/javascript"> 7 /* 8 call(),apply() 9 这两个方法都是函数对象的方法,需要通过函数对象来调用 10 当对函数调用call()和apply()都会调用函数执行 11 在调用call()和apply()可以将一个对象指定为第一个参数 12 此时这个对象将会成为函数执行时的this 13 call()方法可以将实参在对象之后依次传递 14 apply()方法需要将实参封装到一个数组中统一传递 15 */ 16 function fun(a,b){ 17 console.log("a="+a); 18 console.log("b="+b); 19 alert(this.name);//this是call,apply调用时的第一个参数 20 } 21 var obj={name:"wxy"}; 22 var obj2={name:"111"}; 23 //fun.call(obj);//wxy 24 //fun.call(obj2);//111 25 fun.call(obj,2,3); 26 fun.apply(obj,[2,3]); 27 /* 28 在调用函数时,浏览器每次都会传递进两个隐含的参数, 29 1.函数的上下文对象this 30 2.封装实参的对象arguments 31 arguments是一个类数组对象,它也可以通过索引来操作数据,也可以获取实参的长度 32 在调用函数时,我们所传递的实参都会封装到arguments中 33 我们即使不定义形参,也可以通过arguments来使用实参 34 arguments[0] 表示第一个实参 35 arguments[1] 表示第二个实参 36 arguments有一个属性叫做callee 37 这个属性对应一个函数对象,就是当前正在指向的函数的对象 38 */ 39 40 function fun2(){ 41 console.log(arguments.length);//2 42 console.log(arguments[0]);//12 43 } 44 fun2(12,3); 45 </script> 46 </head> 47 <body> 48 </body> 49 </html>