所以如果是放在最外層(就是什麼都沒有包)直接呼叫,那麼this就是window object這個物件了!可以參照如下所示,但是這個例子這樣做是不對的,因為隨意使用window object很容易讓整個程式當掉:
function myFunction() {
return this;
}
myFunction(); // Will return the window object
改進方法是改用object包起來,讓 this 變成 myobject,如下:
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)
firstName:"John",
lastName: "Doe",
fullName: function () {
return this;
}
}
myObject.fullName(); // Will return [object Object] (the owner object)
- 直接使用function的名稱呼叫:
myObject.fullName(); - 使用call()呼叫,好處是第一個參數是傳入this!!!,可以同時設定this是誰:
function myFunction(a, b) {
return a * b;
}
myFunction.call(myObject, 10, 2); // Will return 20 - 使用apply()呼叫,除了第一個參數也是傳this進去之外,差別在於第二個參數是傳array進去:function myFunction(a, b) {
return a * b;
}
myArray = [10,2];
myFunction.apply(myObject, myArray); // Will also return 20
沒有留言:
張貼留言