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

資訊專(zhuān)欄INFORMATION COLUMN

this關(guān)鍵字到底指向誰(shuí)?

curlyCheng / 2282人閱讀

摘要:前言先做一個(gè)小測(cè)試,如果全部答對(duì)了,恭喜你不用往下看了。它就相當(dāng)于一個(gè)沒(méi)有主人調(diào)用它,無(wú)主函數(shù)。不管你用還是最終調(diào)用的都是函數(shù),但它們會(huì)強(qiáng)制的指向了,強(qiáng)制的指向了它們的第一個(gè)參數(shù)對(duì)象。

前言

先做一個(gè)小測(cè)試,如果全部答對(duì)了,恭喜你不用往下看了。

第一題
第二題
第三題
第四題
答案
第一題:zhangsan wangwu zhangsan
第二題:zhangsan zhangsan
第三題:我叫zhangsan 我叫zhangsan
第四題:zhangsan zhangsan zhangsan lisi wangwu
(往下看,下面有詳細(xì)解析哦)
this

指向調(diào)用函數(shù)的對(duì)象

無(wú)對(duì)象調(diào)用函數(shù)/匿名函數(shù)自調(diào)用(this指向window)

通過(guò)new產(chǎn)生的對(duì)象

apply/call調(diào)用

一、指向調(diào)用函數(shù)的對(duì)象

全局函數(shù)(demo)屬于window對(duì)象的方法,window調(diào)用demo所以this就指向了window

obj調(diào)用say方法,this就指向了obj

fun()是全局函數(shù),而聲明的fun接收的是obj里面單純的一個(gè)函數(shù),并沒(méi)有調(diào)用(obj.say()才是調(diào)用了函數(shù)),此時(shí)的fun就是一個(gè)函數(shù)(function(){alert(this.str);}),那么當(dāng)fun()調(diào)用函數(shù)的時(shí)候,this指向的就是window

是誰(shuí)調(diào)用的函數(shù),那么this就指向誰(shuí)

二、無(wú)對(duì)象調(diào)用函數(shù)/匿名函數(shù)自調(diào)用->this指向window

因?yàn)槟涿瘮?shù)沒(méi)有名字,所以就掛給window了

test(),誰(shuí)調(diào)用test那么就指向誰(shuí)。當(dāng)然實(shí)驗(yàn)過(guò),它不是window調(diào)用的,也不是demo調(diào)用的,沒(méi)有人管它,那么它就指向window。它就相當(dāng)于一個(gè)沒(méi)有主人調(diào)用它,無(wú)主函數(shù)。

三、通過(guò)new產(chǎn)生的對(duì)象

當(dāng)我們的函數(shù)Person里面運(yùn)用了this去寫(xiě)屬性和方法這種格式,那么就要通過(guò)new來(lái)讓屬性和方法變得有價(jià)值,通過(guò)new去運(yùn)用函數(shù)里面的屬性和方法

四、apply/call調(diào)用

首先我們來(lái)了解下apply()/call()是個(gè)什么東西呢?

apply()/call():最終是調(diào)用function,只不過(guò)內(nèi)部的this指向了thisObj

function.call([thisObj[,arg1[, arg2[, [,.argN]]]]])
function.apply([thisObj[,argArray]])

注意:
1. 調(diào)用function函數(shù),但是函數(shù)內(nèi)的this指向thisObj(更改對(duì)象內(nèi)部指針)
2. 如果thisObj沒(méi)有傳參,則默認(rèn)為全局對(duì)象
3. call()/apply()聯(lián)系與區(qū)別
    聯(lián)系:功能一樣,第一個(gè)參數(shù)都是thisObj
    區(qū)別:傳遞的參數(shù)如果比較多
        call()的實(shí)參就是一一列出
        apply()的實(shí)參是全部放置在第二個(gè)數(shù)組參數(shù)中
        
        

一個(gè)理解apply()/call()的實(shí)例:




this的第四個(gè)用法實(shí)例


如果直接調(diào)用demo里面寫(xiě)的不管是obj1還是obj2,那么demo還是屬于window調(diào)用的。

不管你用call還是apply最終調(diào)用的都是demo函數(shù),但它們會(huì)強(qiáng)制的this指向了obj1/obj2,強(qiáng)制的指向了它們的第一個(gè)參數(shù)對(duì)象。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/87180.html

相關(guān)文章

  • ES5 call,apply,bind方法總結(jié)(包括理解this指向問(wèn)題)

    總結(jié)call,apply,bind方法的理解使用和區(qū)別。 call,apply,bind這三個(gè)方法在JavaScript中是用來(lái)改變函數(shù)調(diào)用的this指向。那么改變函數(shù)this指向有什么用呢?我們先來(lái)看一段代碼 var a= { name:harden, fn:function () { console.log(this.name); } } var b =...

    nanchen2251 評(píng)論0 收藏0
  • this指向

    摘要:情況如果一個(gè)函數(shù)中有,這個(gè)函數(shù)有被上一級(jí)的對(duì)象所調(diào)用,那么指向的就是上一級(jí)的對(duì)象。 首先必須要說(shuō)的是,this的指向在函數(shù)定義的時(shí)候是確定不了的,只有函數(shù)執(zhí)行的時(shí)候才能確定this到底指向誰(shuí),實(shí)際上this的指向的是最終調(diào)用它的對(duì)象。 函數(shù)調(diào)用模式 例子1 function a(){ var user = username; console.log(this.user)...

    xiongzenghui 評(píng)論0 收藏0
  • 理解學(xué)習(xí)this指向問(wèn)題

    摘要:否則報(bào)錯(cuò)在嚴(yán)格模式下,對(duì)象的函數(shù)中的指向調(diào)用函數(shù)的對(duì)象實(shí)例同樣道理,可以推斷出,在嚴(yán)格模式下,構(gòu)造函數(shù)中的指向構(gòu)造函數(shù)創(chuàng)建的對(duì)象實(shí)例。 要點(diǎn) this的指向在函數(shù)定義的時(shí)候是確定不了的,只有函數(shù)執(zhí)行的時(shí)候才能確定this到底指向誰(shuí),實(shí)際上this的最終指向的是那個(gè)調(diào)用它的對(duì)象。 this指向的三種情況 情況1:如果一個(gè)函數(shù)中有this,但是它沒(méi)有被上一級(jí)的對(duì)象所調(diào)用,那么this指向的...

    dendoink 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<