函式呼叫拾遺

2022-08-05 14:30:17 字數 1276 閱讀 7243

通常構成函式主題的js**在定義之時是不會被執行的,只有在呼叫函式是才會被執行

有4種方式可以呼叫js函式

//定義函式 factorial

function factorial()

var probability = factorial(5)

以函式形式呼叫的函式通常不適用this關鍵字

方法呼叫和函式呼叫區別在於:呼叫上下文。

如果有一個 函式 f 和 物件 o

給o定義一個m()的方法

o.m = f
給物件o定義方法m(),呼叫時就像這樣

o.m()
其中o就成為呼叫上下文,函式體可以使用關鍵字this引用該物件

一個具體的例子:

var calculator = 

};calculator.add();//方法呼叫1+1的結果

calculate.result // => 2

關鍵字this和變數不同,沒有作用域的限制,巢狀的函式不會從呼叫他的函式中繼承this

如果巢狀函式作為方法呼叫,this值指向呼叫它的物件。

如果巢狀函式作為函式呼叫,this指向全域性物件或undefined

很多人誤認為呼叫巢狀函式時this會指向呼叫外層函式的上下文。

如果你想這個外部函式的this值時,需要將this值儲存在一個變數裡,這個變數和內部函式都在同一作用域內。

var o = 

}};

建構函式呼叫與函式呼叫、方法呼叫在實參處理,呼叫上下文和返回值方面都有不同。

建構函式呼叫在圓括號裡包含實參列表,則先計算實參表示式,這與函式呼叫和方法呼叫是一致的。

如果建構函式沒有形參,js建構函式呼叫語法是可以省略()的

var o = new object();

var o = new object;//等價

建構函式呼叫建立一個空物件,繼承自建構函式prototype屬性,建構函式試圖初始這個新建立的物件,作為其呼叫的上下文,因此,建構函式可以使用this來引用這個新建立的物件。

建構函式通常不使用return,當執行完函式體後,會顯示返回。

var args = [girl1, girl2];

var animal = new animal();