函式的方法call()和apply()
阿新 • • 發佈:2022-05-05
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> function fun(a,b) { console.log("a = "+a); console.log("b = "+b); //alert(this); } var obj = { name: "obj", sayName:function(){ alert(this.name); } }; /* * call()和apply() * - 這兩個方法都是函式物件的方法,需要通過函式物件來呼叫 * - 當對函式呼叫call()和apply()都會呼叫函式執行 * - 在呼叫call()和apply()可以將一個物件指定為第一個引數 * 此時這個物件將會成為函式執行時的this * - call()方法可以將實參在物件之後依次傳遞 * - apply()方法需要將實參封裝到一個數組中統一傳遞 * * - this的情況: * 1.以函式形式呼叫時,this永遠都是window * 2.以方法的形式呼叫時,this是呼叫方法的物件 * 3.以建構函式的形式呼叫時,this是新建立的那個物件 * 4.使用call和apply呼叫時,this是指定的那個物件 */ //fun.call(obj,2,3); fun.apply(obj,[2,3]); var obj2 = { name: "obj2" }; /*fun.apply(); fun.call(); fun();*/ //fun.call(obj); //fun.apply(obj); //fun(); //obj.sayName.apply(obj2); </script> </head> <body> </body> </html>