91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中this對象怎么使用

發布時間:2022-05-07 14:44:03 來源:億速云 閱讀:124 作者:iii 欄目:大數據

這篇文章主要介紹“JavaScript中this對象怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“JavaScript中this對象怎么使用”文章能幫助大家解決問題。

this對象是在函數運行時,基于函數的執行環境綁定的。

其實這句話的本質就是,誰調用了函數,this就指向誰

具體的來說,通常有以下幾種情況:

全局函數

在全局環境中,this指向Window

//例子1
 function A() {
 console.log(this)
 }
 A();//Window

上面的例子很簡單,函數A在全局環境中執行,也就是全局對象Window調用了函數。此時this指向Window

對象方法

作為對象方法調用時,this指向調用該方法的對象

//例子2
var b = {
 getThis:function(){
  console.log(this)
 }
}
b.getThis()//b

到這里我們舉的例子都比較簡單易懂,接下來來一個有意思的:

//例子3
 var c = {
 getFunc:function(){
  return function(){
  console.log(this)
  }
 }
 }
 var cFun = c.getFunc()
 cFun()//Window

這個例子和前一個例子不一樣,運行c.getFunc()時,首先返回的是一個匿名函數,我們將這個函數賦值給cFun,接著在全局環境中調用了cFun(),所以此時this指向的還是Window。

如果我們一定要讓這里返回的是c對象呢?在開頭我們說過,this對象是在函數執行時確定的,在例子3中,執行c.getFunc()時,this對象指向的還是c,所以我們只要保持住這個this就好了,對上面的代碼稍微改動:

//例子4
 var c = {
 getFunc:function(){
  var that = this //在這里保留住this
  return function(){
  console.log(that)
  }
 }
 }
 var cFun = c.getFunc()
 cFun()//c

這也就是我們經常可以在一些代碼中看到var self = this或者var that = this之類的原因了。

call和apply

此時this對象通常指向函數中指定的this值(注意這里的通常2字,考試要考的)

call和apply算是老生常談,但還是稍微介紹下,怕新同學可能沒接觸過(其實是為了湊點字數),拿call來說,語法是這樣的

fun.call(thisArg, arg1, arg2, ...)

這個方法怎么用呢,看下面的例子:

//例子5
var d = {
 getThis:function(){
  console.log(this)
 }
}
var e = {
 name:'e'//(給e寫個`name`屬性只是因為覺得孤零零的太難看了~~)
}
d.getThis.call(e)//e

在這里我們就可以看出call函數的意思了:指定一個對象o1去調用其他對象o2的方法,此時this對象指向o1

好了,那為什么前面我們說通常呢?因為,這里的thisArg是可以指定為null和undefined的。請看:

//例子6
var d = {
 getThis:function(){
  console.log(this)
 }
}
 d.getThis.call(null)//Window
 d.getThis.call(undefined)//Window

此時的this指向全局對象Window

箭頭函數

es6中的箭頭函數現在也用的比較頻繁,但是有個需要注意的點是:

函數體內的this對象,就是定義時所在的對象,而不是使用時所在的對象。

其實出現這種情況的根本原因是:箭頭函數沒有this對象,所以箭頭函數的this就是外層代碼的this

//例子7
 var f = {
  getThis:()=>{
   console.log(this)
  }
 }
 f.getThis()//Window

這個例子和前面例子2是基本一樣的,只是把普通函數改寫成箭頭函數,但是此時的this對象已經指向了外層的Window。

考慮到這一點可能不好理解,我們再看幾個例子:

//例子8
 var g = {
 getThis:function(){
  return function(){console.log(this)}
 }
 }
 var h = {
 getThis:function(){
  return ()=> console.log(this)
 }
 }
 g.getThis()()//Window
 h.getThis()()//h

這個例子里,g的getThis寫法就和之前的例子3一樣,由于函數在全局環境中運行,所以此時this指向Window;h的getThis使用了箭頭函數,所以this指向了外層代碼塊的this所以,此時this指向的是h。

關于“JavaScript中this對象怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

英吉沙县| 合作市| 日喀则市| 原阳县| 胶南市| 恩施市| 礼泉县| 丁青县| 刚察县| 石狮市| 二连浩特市| 茶陵县| 太和县| 深水埗区| 龙川县| 东辽县| 英超| 襄樊市| 玛沁县| 延庆县| 巩义市| 丰都县| 固阳县| 黄山市| 万安县| 灌云县| 静安区| 清水河县| 成安县| 沙田区| 陇川县| 筠连县| 绥宁县| 寿阳县| 清水县| 华容县| 山东| 广宗县| 兴宁市| 江源县| 正阳县|