摘要:如果嵌套函數(shù)作為函數(shù)調(diào)用,指向全局對(duì)象或。構(gòu)造函數(shù)調(diào)用在圓括號(hào)里包含實(shí)參列表,則先計(jì)算實(shí)參表達(dá)式,這與函數(shù)調(diào)用和方法調(diào)用是一致的。構(gòu)造函數(shù)通常不使用,當(dāng)執(zhí)行完函數(shù)體后,會(huì)顯示返回。其中可以用來間接調(diào)用函數(shù)。
函數(shù)調(diào)用總結(jié)
通常構(gòu)成函數(shù)主題的JS代碼在定義之時(shí)是不會(huì)被執(zhí)行的,只有在調(diào)用函數(shù)是才會(huì)被執(zhí)行
有4種方式可以調(diào)用JS函數(shù)
//定義函數(shù) factorial function factorial(){ if(x <= 1) return 1; return x * factorial(x-1); } var probability = factorial(5)
以函數(shù)形式調(diào)用的函數(shù)通常不適用this關(guān)鍵字
方法調(diào)用方法調(diào)用和函數(shù)調(diào)用區(qū)別在于:調(diào)用上下文。
如果有一個(gè) 函數(shù) f 和 對(duì)象 o
給o定義一個(gè)m()的方法
o.m = f
給對(duì)象o定義方法m(),調(diào)用時(shí)就像這樣
o.m()
其中o就成為調(diào)用上下文,函數(shù)體可以使用關(guān)鍵字this引用該對(duì)象
一個(gè)具體的例子:
var calculator = { operand1:1; operand2:2; add:function(){ this.result = this.operand1+this.operand2; } }; calculator.add();//方法調(diào)用1+1的結(jié)果 calculate.result // => 2this關(guān)鍵字
關(guān)鍵字this和變量不同,沒有作用域的限制,嵌套的函數(shù)不會(huì)從調(diào)用他的函數(shù)中繼承this
如果嵌套函數(shù)作為方法調(diào)用,this值指向調(diào)用它的對(duì)象。
如果嵌套函數(shù)作為函數(shù)調(diào)用,this指向全局對(duì)象或undefined。
很多人誤認(rèn)為調(diào)用嵌套函數(shù)時(shí)this會(huì)指向調(diào)用外層函數(shù)的上下文。
如果你想這個(gè)外部函數(shù)的this值時(shí),需要將this值保存在一個(gè)變量里,這個(gè)變量和內(nèi)部函數(shù)都在同一作用域內(nèi)。
var o = { m:function(){ //對(duì)象中的m()方法 var self = this;//保存this值 console.log(this === o);//true,this就是這個(gè)對(duì)象o f(); //調(diào)用輔助函數(shù)f() function f(){ console.log(this === o);//false,this的值是全局對(duì)象或undefined console.log(this === o);//true,self指外部函數(shù)的this值 } } };構(gòu)造函數(shù)調(diào)用
構(gòu)造函數(shù)調(diào)用與函數(shù)調(diào)用、方法調(diào)用在實(shí)參處理,調(diào)用上下文和返回值方面都有不同。
構(gòu)造函數(shù)調(diào)用在圓括號(hào)里包含實(shí)參列表,則先計(jì)算實(shí)參表達(dá)式,這與函數(shù)調(diào)用和方法調(diào)用是一致的。
如果構(gòu)造函數(shù)沒有形參,JS構(gòu)造函數(shù)調(diào)用語法是可以省略()的
var o = new Object(); var o = new Object;//等價(jià)
構(gòu)造函數(shù)調(diào)用創(chuàng)建一個(gè)空對(duì)象,繼承自構(gòu)造函數(shù)prototype屬性,構(gòu)造函數(shù)試圖初始這個(gè)新創(chuàng)建的對(duì)象,作為其調(diào)用的上下文,因此,構(gòu)造函數(shù)可以使用this來引用這個(gè)新創(chuàng)建的對(duì)象。
構(gòu)造函數(shù)通常不使用return,當(dāng)執(zhí)行完函數(shù)體后,會(huì)顯示返回。
JS函數(shù)也是對(duì)象,自然也有方法。
其中call(),apply()可以用來間接調(diào)用函數(shù)。這兩個(gè)方法都支持顯式調(diào)用所需this值
我們可以將call(),apply()看作某個(gè)對(duì)象的方法,通過調(diào)用方法的形式來簡介調(diào)用。
call和apply的第一個(gè)實(shí)參是要調(diào)用的函數(shù)的母對(duì)象,他是調(diào)用上下文,在函數(shù)體內(nèi)可以通過this來獲得引用。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/78859.html
摘要:如果嵌套函數(shù)作為函數(shù)調(diào)用,指向全局對(duì)象或。構(gòu)造函數(shù)調(diào)用在圓括號(hào)里包含實(shí)參列表,則先計(jì)算實(shí)參表達(dá)式,這與函數(shù)調(diào)用和方法調(diào)用是一致的。構(gòu)造函數(shù)通常不使用,當(dāng)執(zhí)行完函數(shù)體后,會(huì)顯示返回。其中可以用來間接調(diào)用函數(shù)。 函數(shù)調(diào)用總結(jié) 通常構(gòu)成函數(shù)主題的JS代碼在定義之時(shí)是不會(huì)被執(zhí)行的,只有在調(diào)用函數(shù)是才會(huì)被執(zhí)行有4種方式可以調(diào)用JS函數(shù) 函數(shù)調(diào)用 //定義函數(shù) factorial function...
摘要:本文主要是對(duì)自己前端知識(shí)遺漏點(diǎn)的總結(jié)和歸納,希望對(duì)大家有用,會(huì)持續(xù)更新的解釋語言和編譯型語言解釋型語言與編譯型語言的區(qū)別翻譯時(shí)間的不同。命令會(huì)有變量聲明提前的效果。硬綁定參考不同是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用則是立即調(diào)用。 本文主要是對(duì)自己前端知識(shí)遺漏點(diǎn)的總結(jié)和歸納,希望對(duì)大家有用,會(huì)持續(xù)更新的~ 解釋語言和編譯型語言 解釋型語言與編譯型語言的區(qū)別翻譯時(shí)間的不同。編譯型語言在程序執(zhí)行之前...
摘要:本文主要是對(duì)自己前端知識(shí)遺漏點(diǎn)的總結(jié)和歸納,希望對(duì)大家有用,會(huì)持續(xù)更新的解釋語言和編譯型語言解釋型語言與編譯型語言的區(qū)別翻譯時(shí)間的不同。命令會(huì)有變量聲明提前的效果。硬綁定參考不同是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用則是立即調(diào)用。 本文主要是對(duì)自己前端知識(shí)遺漏點(diǎn)的總結(jié)和歸納,希望對(duì)大家有用,會(huì)持續(xù)更新的~ 解釋語言和編譯型語言 解釋型語言與編譯型語言的區(qū)別翻譯時(shí)間的不同。編譯型語言在程序執(zhí)行之前...
閱讀 3537·2021-09-22 15:50
閱讀 3237·2019-08-30 15:54
閱讀 2752·2019-08-30 14:12
閱讀 3061·2019-08-30 11:22
閱讀 2085·2019-08-29 11:16
閱讀 3581·2019-08-26 13:43
閱讀 1194·2019-08-23 18:33
閱讀 927·2019-08-23 18:32