對這個知識點只有一個淺顯的認識,記錄一下,加深自己的印象!如有錯誤的地方,希望指正!
call和apply用途: 1.傳遞參數 2 擴充函數的作用域
格式:fn1.call(obj,num1,num2,num3...) 可以是一個值或者多個值
fn2.apply(obj,[num1,num2,num3]) 值應該放在數組當中,一個或者多個
代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> </head> <body> <script type="text/javascript"> //全局變量,相當於window.names var names='zhang'; //對象屬性名 var obj={names:'wang'}; //函數名大寫相當於一個對象,函數本身也是一個對象; function Object(names){ this.names=names; } var a=new Object('sun'); //這個函數將會綁定不同對象 function showName(){ console.log(this.names); } /*******************************call使用*********************************************/ //返回全局的作用域 showName();//zhang //返回obj的作用域 showName.call(obj);//wang //返回函數(對象)的作用域 showName.call(a,'sun');//sun /*通過上面的小例子可以知道,call綁定在哪個對象上面就可以使用當前的作用域*/ /*******************************call使用*********************************************/ /*******************************apply使用*********************************************/ //apply()幾乎一樣,只是傳遞參數的格式不一樣 showName();//zhang showName.apply(obj);//wang showName.apply(a,['sun']);//sun 必須放在數組當中,一個或者多個 /*******************************apply使用*********************************************/ </script> </body> </html>