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

資訊專欄INFORMATION COLUMN

this關鍵字到底指向誰?

curlyCheng / 2286人閱讀

摘要:前言先做一個小測試,如果全部答對了,恭喜你不用往下看了。它就相當于一個沒有主人調用它,無主函數。不管你用還是最終調用的都是函數,但它們會強制的指向了,強制的指向了它們的第一個參數對象。

前言

先做一個小測試,如果全部答對了,恭喜你不用往下看了。

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

指向調用函數的對象

無對象調用函數/匿名函數自調用(this指向window)

通過new產生的對象

apply/call調用

一、指向調用函數的對象

全局函數(demo)屬于window對象的方法,window調用demo所以this就指向了window

obj調用say方法,this就指向了obj

fun()是全局函數,而聲明的fun接收的是obj里面單純的一個函數,并沒有調用(obj.say()才是調用了函數),此時的fun就是一個函數(function(){alert(this.str);}),那么當fun()調用函數的時候,this指向的就是window

是誰調用的函數,那么this就指向誰

二、無對象調用函數/匿名函數自調用->this指向window

因為匿名函數沒有名字,所以就掛給window了

test(),誰調用test那么就指向誰。當然實驗過,它不是window調用的,也不是demo調用的,沒有人管它,那么它就指向window。它就相當于一個沒有主人調用它,無主函數。

三、通過new產生的對象

當我們的函數Person里面運用了this去寫屬性和方法這種格式,那么就要通過new來讓屬性和方法變得有價值,通過new去運用函數里面的屬性和方法

四、apply/call調用

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

apply()/call():最終是調用function,只不過內部的this指向了thisObj

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

注意:
1. 調用function函數,但是函數內的this指向thisObj(更改對象內部指針)
2. 如果thisObj沒有傳參,則默認為全局對象
3. call()/apply()聯系與區別
    聯系:功能一樣,第一個參數都是thisObj
    區別:傳遞的參數如果比較多
        call()的實參就是一一列出
        apply()的實參是全部放置在第二個數組參數中
        
        

一個理解apply()/call()的實例:




this的第四個用法實例


如果直接調用demo里面寫的不管是obj1還是obj2,那么demo還是屬于window調用的。

不管你用call還是apply最終調用的都是demo函數,但它們會強制的this指向了obj1/obj2,強制的指向了它們的第一個參數對象。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/87180.html

相關文章

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

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

    nanchen2251 評論0 收藏0
  • this指向

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

    xiongzenghui 評論0 收藏0
  • 理解學習this指向問題

    摘要:否則報錯在嚴格模式下,對象的函數中的指向調用函數的對象實例同樣道理,可以推斷出,在嚴格模式下,構造函數中的指向構造函數創建的對象實例。 要點 this的指向在函數定義的時候是確定不了的,只有函數執行的時候才能確定this到底指向誰,實際上this的最終指向的是那個調用它的對象。 this指向的三種情況 情況1:如果一個函數中有this,但是它沒有被上一級的對象所調用,那么this指向的...

    dendoink 評論0 收藏0

發表評論

0條評論

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