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

資訊專欄INFORMATION COLUMN

JavaScript的this

周國輝 / 3300人閱讀

摘要:里,的值隨著一個函數(shù)被調(diào)用情況的不同而不同。作為構(gòu)造函數(shù)被調(diào)用指用關(guān)鍵字進(jìn)行調(diào)用生成一個對象實(shí)例子的情況,這時候生成的實(shí)例對象在我們用調(diào)用一個構(gòu)造函數(shù)時,發(fā)生了三件事創(chuàng)建了一個新的空對象。在第一步創(chuàng)建的這個空對象作為傳給這個構(gòu)造函數(shù)。

在JavaScript被調(diào)用的時候,除了可見的行參被傳入方法體之外,this也被隱形地傳進(jìn)去了。所以,從這點(diǎn)也再次說明JavaScript的this的值完全取決于函數(shù)被調(diào)用時候的上下文,而不是像java的this是在聲明的時候確定的。
JavaScript里,this的值隨著一個函數(shù)被調(diào)用情況的不同而不同。而一個函數(shù)有4種被調(diào)用的情況,也就是說this的值有4種,那先來看看有哪四種調(diào)用函數(shù)的方法:

1: 作為方法被調(diào)用
當(dāng)一個函數(shù)被賦給一個對象的屬性,并引用該屬性進(jìn)行調(diào)用時,this === the object

var func = function(){
    return this.a;
}
var obj = {
    a: 10,
    name: "hehe",
    fn: func
}
this.a = 20;
obj.fn();//10

當(dāng)我們執(zhí)行到func時,在右邊的調(diào)試工具欄可以看到this是我們的obj這個對象。

2: 作為一個函數(shù)被調(diào)用
只最常用的用()進(jìn)行調(diào)用的情況,這時候this === Window
先來看一段代碼:

var func = function(){
    var a = 10;
    return this.a;
}

var a = 20;
func();//結(jié)果是20而不是10

當(dāng)我們執(zhí)行到func時,這時候的this是全局對象Window,那this.a自然就是全局變量a(20),而不是定義在func內(nèi)部的a(10)。
其實(shí)第二種情況是第一種情況的特例,這里的對象是全局對象Window,這個方法是在Window上調(diào)用的,那this自然也就是Window了。

3: 作為構(gòu)造函數(shù)被調(diào)用
指用new關(guān)鍵字進(jìn)行調(diào)用生成一個對象實(shí)例子的情況,這時候this === 生成的實(shí)例對象

function Fruit(){
   this.func = function(){return this}
}
var apple = new Fruit();
var orange = new Fruit();

apple.func() === apple; //true
orange.func() === orange; // ture

在我們用new調(diào)用一個構(gòu)造函數(shù)時,發(fā)生了三件事:

 1: 創(chuàng)建了一個新的空對象。
 2: 在第一步創(chuàng)建的這個空對象作為this傳給這個構(gòu)造函數(shù)。 (每一個函數(shù)被調(diào)用時,都隱式地傳入一個this)
 3: 如果沒有顯示的返回值,新創(chuàng)建的這個對象,就會作為構(gòu)造器函數(shù)的返回值進(jìn)行返回。

第三點(diǎn)解釋了為什么我們可以在apple上調(diào)用func這個方法,第二點(diǎn)解釋了為什么appl.func()的執(zhí)行結(jié)果等于apple.

4: 使用apply()和call()方法進(jìn)行調(diào)用

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

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

相關(guān)文章

  • JavaScript深入淺出

    摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對方法,包括,,。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸耍虼宋闹兄豢炊?8 成左右,希望能夠給大家?guī)韼椭?...(據(jù)說是阿里的前端妹子寫的) this 的值到底...

    blair 評論0 收藏0
  • javascript技術(shù)難點(diǎn)(三)之this、new、apply和call詳解

    摘要:第四點(diǎn)也要著重講下,記住構(gòu)造函數(shù)被操作,要讓正常作用最好不能在構(gòu)造函數(shù)里 4) this、new、call和apply的相關(guān)問題 講解this指針的原理是個很復(fù)雜的問題,如果我們從javascript里this的實(shí)現(xiàn)機(jī)制來說明this,很多朋友可能會越來越糊涂,因此本篇打算換一個思路從應(yīng)用的角度來講解this指針,從這個角度理解this指針更加有現(xiàn)實(shí)意義。 下面我們看看在ja...

    ghnor 評論0 收藏0
  • JavaScript進(jìn)階之’this

    摘要:所以相同點(diǎn)是,在全局范圍內(nèi),全局變量終究是屬于老大的。只生效一次引入了。只生效一次在箭頭函數(shù)中,與封閉詞法環(huán)境的保持一致。我通常把這些原始函數(shù)叫做構(gòu)造函數(shù)。在里面你可以嵌套函數(shù),也就是你可以在函數(shù)里面定義函數(shù)。 showImg(https://img-blog.csdnimg.cn/20190522000008399.jpg?x-oss-process=image/watermark,...

    shenhualong 評論0 收藏0
  • Javascript 深入淺出This

    摘要:中函數(shù)的調(diào)用有以下幾種方式作為對象方法調(diào)用,作為函數(shù)調(diào)用,作為構(gòu)造函數(shù)調(diào)用,和使用或調(diào)用。作為構(gòu)造函數(shù)調(diào)用中的構(gòu)造函數(shù)也很特殊,構(gòu)造函數(shù),其實(shí)就是通過這個函數(shù)生成一個新對象,這時候的就會指向這個新對象如果不使用調(diào)用,則和普通函數(shù)一樣。 this 是 JavaScript 比較特殊的關(guān)鍵字,本文將深入淺出的分析其在不同情況下的含義,可以這樣說,正確掌握了 JavaScript 中的 th...

    Y3G 評論0 收藏0
  • 學(xué)習(xí)React之前你需要知道JavaScript基礎(chǔ)知識

    摘要:和類在開始時遇到類組件,只是需要有關(guān)類的基礎(chǔ)。畢竟,中的條件呈現(xiàn)僅再次顯示大多數(shù)是而不是特定的任何內(nèi)容。 在我的研討會期間,更多的材料是關(guān)于JavaScript而不是React。其中大部分歸結(jié)為JavaScript ES6以及功能和語法,但也包括三元運(yùn)算符,語言中的簡寫版本,此對象,JavaScript內(nèi)置函數(shù)(map,reduce,filter)或更常識性的概念,如:可組合性,可重用...

    bitkylin 評論0 收藏0

發(fā)表評論

0條評論

周國輝

|高級講師

TA的文章

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