Function被定義(defined)時,在function裡的code並不會被執行,
Function被調用(invoked)時,在function裡的code會被執行。
一般會使用call a function而不是 invoke a function,
但是JavaScript中可以不用call 就invoke a function。
function add(x) {
return x + 2;
};
add(2);
window.add(2);
add
不屬於任何的object,
但是JavaScript有一個預設的全域物件 (global object),
在HTML page中,global object就是自身HTML page,
所以add
這個function屬於HTML page,
而在瀏覽器中則是瀏覽器的window,
意旨add
是window的function,add()
、window.add()
為同一個function。
在JavaScript中,this
代表了擁有當前code的那個object
,
在function中的this
,代表了擁有function的那個object
。
function add() {
return this;
};
console.log(add()); // Window
add()
屬於global object,window,所以這邊的this
指的是window。
在JavaScript中,function也可以被定義成為object method:
var me = {
name: 'Azer',
age: 18,
introduce: function() {
return "My name is " + this.name + ", I'm " + this.age + " years old.";
}
}
me.introduce(); //My name is Azer, I'm 18 years old.
在這之中introduce
是屬於me
這個object的一個function,
在前面有提到說在function中的this
,代表了擁有function的那個object
,
在這邊指的是me
。
var me = {
name: 'Azer',
age: 18,
introduce: function() {
return this;
}
}
me.introduce(); // {name: "Azer", age: 18, introduce: ƒ}