1. 程式人生 > 其它 >js基礎---函式物件方法,call()和apply() 可定義this的指向

js基礎---函式物件方法,call()和apply() 可定義this的指向

- call()
- apply()
- 這兩個方法都是函式物件的方法需要通過函式物件來呼叫
- 通過兩個方法可以直接呼叫函式,並且可以通過第一個實參來指定函式中this
- 不同的是call是直接傳遞函式的實參而apply需要將實參封裝到一個數組中傳遞

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);