網頁

Javascript 中參數 this 的意義、呼叫function的三種方法

this 代表"擁有"這個 function 的 object
所以如果是放在最外層(就是什麼都沒有包)直接呼叫,那麼this就是window object這個物件了!可以參照如下所示,但是這個例子這樣做是不對的,因為隨意使用window object很容易讓整個程式當掉:

function myFunction() {
    return this;
}
myFunction();                // Will return the window object

改進方法是改用object包起來,讓 this 變成 myobject,如下:
var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this;
    }
}
myObject.fullName();          // Will return [object Object] (the owner object)

了解this是什麼後,要告訴大家JavaScript中呼叫function的三種方法:
  1. 直接使用function的名稱呼叫:
    myObject.fullName();
  2. 使用call()呼叫,好處是第一個參數是傳入this!!!,可以同時設定this是誰:
    function myFunction(a, b) {
        return a * b;
    }
    myFunction.call(myObject, 102);      // Will return 20
  3. 使用apply()呼叫,除了第一個參數也是傳this進去之外,差別在於第二個參數是傳array進去:
    function myFunction(a, b) {
        return a * b;
    }
    myArray = [10,2];
    myFunction.apply(myObject, myArray);   // Will also return 20

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...