摘要:如果嵌套函數作為函數調用,指向全局對象或。構造函數調用在圓括號里包含實參列表,則先計算實參表達式,這與函數調用和方法調用是一致的。構造函數通常不使用,當執行完函數體后,會顯示返回。其中可以用來間接調用函數。
函數調用總結
通常構成函數主題的JS代碼在定義之時是不會被執行的,只有在調用函數是才會被執行
有4種方式可以調用JS函數
//定義函數 factorial function factorial(){ if(x <= 1) return 1; return x * factorial(x-1); } var probability = factorial(5)
以函數形式調用的函數通常不適用this關鍵字
方法調用方法調用和函數調用區別在于:調用上下文。
如果有一個 函數 f 和 對象 o
給o定義一個m()的方法
o.m = f
給對象o定義方法m(),調用時就像這樣
o.m()
其中o就成為調用上下文,函數體可以使用關鍵字this引用該對象
一個具體的例子:
var calculator = { operand1 : 1; operand2 : 2; add : function(){ this.result = this.operand1+this.operand2; } }; calculator.add();//方法調用1+1的結果 calculate.result // => 2this關鍵字
關鍵字this和變量不同,沒有作用域的限制,嵌套的函數不會從調用他的函數中繼承this
如果嵌套函數作為方法調用,this值指向調用它的對象。
如果嵌套函數作為函數調用,this指向全局對象或undefined。
很多人誤認為調用嵌套函數時this會指向調用外層函數的上下文。
如果你想這個外部函數的this值時,需要將this值保存在一個變量里,這個變量和內部函數都在同一作用域內。
var o = { m:function(){ //對象中的m()方法 var self = this;//保存this值 console.log(this === o);//true,this就是這個對象o f(); //調用輔助函數f() function f(){ console.log(this === o);//false,this的值是全局對象或undefined console.log(this === o);//true,self指外部函數的this值 } } };構造函數調用
構造函數調用與函數調用、方法調用在實參處理,調用上下文和返回值方面都有不同。
構造函數調用在圓括號里包含實參列表,則先計算實參表達式,這與函數調用和方法調用是一致的。
如果構造函數沒有形參,JS構造函數調用語法是可以省略()的
var o = new Object(); var o = new Object;//等價
構造函數調用創建一個空對象,繼承自構造函數prototype屬性,構造函數試圖初始這個新創建的對象,作為其調用的上下文,因此,構造函數可以使用this來引用這個新創建的對象。
構造函數通常不使用return,當執行完函數體后,會顯示返回。
JS函數也是對象,自然也有方法。
其中call(),apply()可以用來間接調用函數。這兩個方法都支持顯式調用所需this值
var args = [girl1, girl2]; var animal = new Animal(); Man.prototype.fuck.apply(animal, args);
我們可以將call(),apply()看作某個對象的方法,通過調用方法的形式來簡介調用。
call和apply的第一個實參是要調用的函數的母對象,他是調用上下文,在函數體內可以通過this來獲得引用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78855.html
摘要:如果嵌套函數作為函數調用,指向全局對象或。構造函數調用在圓括號里包含實參列表,則先計算實參表達式,這與函數調用和方法調用是一致的。構造函數通常不使用,當執行完函數體后,會顯示返回。其中可以用來間接調用函數。 函數調用總結 通常構成函數主題的JS代碼在定義之時是不會被執行的,只有在調用函數是才會被執行有4種方式可以調用JS函數 函數調用 //定義函數 factorial function...
閱讀 2676·2023-04-25 20:19
閱讀 1930·2021-11-24 09:38
閱讀 1632·2021-11-16 11:44
閱讀 4341·2021-09-02 15:40
閱讀 1317·2019-08-30 15:55
閱讀 2022·2019-08-30 15:52
閱讀 3759·2019-08-29 17:20
閱讀 2247·2019-08-29 13:48