国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

函數(shù)調(diào)用拾遺

kel / 1315人閱讀

摘要:如果嵌套函數(shù)作為函數(shù)調(diào)用,指向全局對象或。構(gòu)造函數(shù)調(diào)用在圓括號里包含實(shí)參列表,則先計算實(shí)參表達(dá)式,這與函數(shù)調(diào)用和方法調(diào)用是一致的。構(gòu)造函數(shù)通常不使用,當(dāng)執(zhí)行完函數(shù)體后,會顯示返回。其中可以用來間接調(diào)用函數(shù)。

函數(shù)調(diào)用總結(jié)

通常構(gòu)成函數(shù)主題的JS代碼在定義之時是不會被執(zhí)行的,只有在調(diào)用函數(shù)是才會被執(zhí)行
有4種方式可以調(diào)用JS函數(shù)

函數(shù)調(diào)用
//定義函數(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)用上下文。
如果有一個 函數(shù) f 和 對象 o
給o定義一個m()的方法

o.m = f

給對象o定義方法m(),調(diào)用時就像這樣

o.m()

其中o就成為調(diào)用上下文,函數(shù)體可以使用關(guān)鍵字this引用該對象
一個具體的例子:

var calculator = {
    operand1 : 1;
    operand2 : 2;
    add : function(){
        this.result = this.operand1+this.operand2;
    }
};
calculator.add();//方法調(diào)用1+1的結(jié)果
calculate.result // => 2
this關(guān)鍵字

關(guān)鍵字this和變量不同,沒有作用域的限制,嵌套的函數(shù)不會從調(diào)用他的函數(shù)中繼承this
如果嵌套函數(shù)作為方法調(diào)用,this值指向調(diào)用它的對象。
如果嵌套函數(shù)作為函數(shù)調(diào)用,this指向全局對象或undefined
很多人誤認(rèn)為調(diào)用嵌套函數(shù)時this會指向調(diào)用外層函數(shù)的上下文。
如果你想這個外部函數(shù)的this值時,需要將this值保存在一個變量里,這個變量和內(nèi)部函數(shù)都在同一作用域內(nèi)。

var o = {
    m:function(){ //對象中的m()方法
        var self = this;//保存this值
        console.log(this === o);//true,this就是這個對象o
        f(); //調(diào)用輔助函數(shù)f()
        
        function f(){
            console.log(this === o);//false,this的值是全局對象或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)用在圓括號里包含實(shí)參列表,則先計算實(shí)參表達(dá)式,這與函數(shù)調(diào)用和方法調(diào)用是一致的。
如果構(gòu)造函數(shù)沒有形參,JS構(gòu)造函數(shù)調(diào)用語法是可以省略()的

var o = new Object();
var o = new Object;//等價

構(gòu)造函數(shù)調(diào)用創(chuàng)建一個空對象,繼承自構(gòu)造函數(shù)prototype屬性,構(gòu)造函數(shù)試圖初始這個新創(chuàng)建的對象,作為其調(diào)用的上下文,因此,構(gòu)造函數(shù)可以使用this來引用這個新創(chuàng)建的對象。
構(gòu)造函數(shù)通常不使用return,當(dāng)執(zhí)行完函數(shù)體后,會顯示返回。

間接調(diào)用

JS函數(shù)也是對象,自然也有方法。
其中call(),apply()可以用來間接調(diào)用函數(shù)。這兩個方法都支持顯式調(diào)用所需this值

var args = [girl1, girl2];
var animal = new Animal();
Man.prototype.fuck.apply(animal, args);

我們可以將call(),apply()看作某個對象的方法,通過調(diào)用方法的形式來簡介調(diào)用。
call和apply的第一個實(shí)參是要調(diào)用的函數(shù)的母對象,他是調(diào)用上下文,在函數(shù)體內(nèi)可以通過this來獲得引用。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/78855.html

相關(guān)文章

  • 函數(shù)調(diào)用拾遺

    摘要:如果嵌套函數(shù)作為函數(shù)調(diào)用,指向全局對象或。構(gòu)造函數(shù)調(diào)用在圓括號里包含實(shí)參列表,則先計算實(shí)參表達(dá)式,這與函數(shù)調(diào)用和方法調(diào)用是一致的。構(gòu)造函數(shù)通常不使用,當(dāng)執(zhí)行完函數(shù)體后,會顯示返回。其中可以用來間接調(diào)用函數(shù)。 函數(shù)調(diào)用總結(jié) 通常構(gòu)成函數(shù)主題的JS代碼在定義之時是不會被執(zhí)行的,只有在調(diào)用函數(shù)是才會被執(zhí)行有4種方式可以調(diào)用JS函數(shù) 函數(shù)調(diào)用 //定義函數(shù) factorial function...

    elisa.yang 評論0 收藏0
  • 前端技能拾遺

    摘要:本文主要是對自己前端知識遺漏點(diǎn)的總結(jié)和歸納,希望對大家有用,會持續(xù)更新的解釋語言和編譯型語言解釋型語言與編譯型語言的區(qū)別翻譯時間的不同。命令會有變量聲明提前的效果。硬綁定參考不同是返回對應(yīng)函數(shù),便于稍后調(diào)用則是立即調(diào)用。 本文主要是對自己前端知識遺漏點(diǎn)的總結(jié)和歸納,希望對大家有用,會持續(xù)更新的~ 解釋語言和編譯型語言 解釋型語言與編譯型語言的區(qū)別翻譯時間的不同。編譯型語言在程序執(zhí)行之前...

    lyning 評論0 收藏0
  • 前端技能拾遺

    摘要:本文主要是對自己前端知識遺漏點(diǎn)的總結(jié)和歸納,希望對大家有用,會持續(xù)更新的解釋語言和編譯型語言解釋型語言與編譯型語言的區(qū)別翻譯時間的不同。命令會有變量聲明提前的效果。硬綁定參考不同是返回對應(yīng)函數(shù),便于稍后調(diào)用則是立即調(diào)用。 本文主要是對自己前端知識遺漏點(diǎn)的總結(jié)和歸納,希望對大家有用,會持續(xù)更新的~ 解釋語言和編譯型語言 解釋型語言與編譯型語言的區(qū)別翻譯時間的不同。編譯型語言在程序執(zhí)行之前...

    Vultr 評論0 收藏0

發(fā)表評論

0條評論

kel

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<