##一、函數呼叫的幾種不同方式:
#1、作為一個函數呼叫
#2、作為一個方法進行調用,在物件上進行調用,支援物件導向程式設計
#3、作為建構器進行調用,建立一個新物件#4、透過apply()或call()方法進行調用,這種方式相對最複雜
##二、函數呼叫都會傳遞兩個隱式參數並存在於函數的作用域內:arguments和this
函數傳參和形參不一致如何處理:
#1、實參>形參--》超出部分實參不會分配
#2、實參<形參--》沒有對應的形參分配為undefined
##三、
#1、函數上下文:依賴函數的呼叫方式(四種呼叫方式)。
#3、this:引用了與該函數呼叫進行隱式關聯的一個對象,稱之為函數上下文
##四:
#1、「作為函數」呼叫:指上面四種的第一種方式,有別於其他三種
例如:function test(a,b){}/var test = function(a,b){}
此時的函數上下文是window,即**this==window**
#2、「作為方法」呼叫:當函數被賦值給一個對象,並使用引用該函數的這個屬性時
I、一個方法所屬的對像在該方法體內可以以this呼叫
var o = {}; o.test = function(){}; o.test();此時的函數上下文是o這個對象,即**this==o**
##3、「作為建構器」呼叫:和函數宣告一樣,區別於如何呼叫函數,在函數呼叫前使用new關鍵字
function test(){return this};
function Ninja(){ this.skulk = function(){return this}; //无显式返回,故返回this===o }===function Ninja(){ var o = {}; o.skulk = function(){return this;}; return o; } var ninja1 = new Ninja(); var ninja2 = new Ninja(); ninja1.skulk === ninja1; ninja2.skulk === ninja2;# ######apply()和call()方法:明確的指定任何一個物件作為函數上下文###apply()需要兩個參數:1、作為函數上下文的物件2、作為函數參數所組成的陣列###call()也需要兩個參數:差異是第二個參數是一個參數列表########可以讓任何元素作為apply()和call()的上下文###
以上是js函數的呼叫及有關隱式參數arguments和this的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!