技術頻道導航
HTML/CSS
.NET技術
IIS技術
PHP技術
Js/JQuery
Photoshop
Fireworks
服務器技術
操作系統(tǒng)
網(wǎng)站運營

贊助商

分類目錄

贊助商

最新文章

搜索

[實例]演示區(qū)別箭頭函數(shù)和常規(guī)函數(shù)的this值

作者:admin    時間:2022-5-10 13:38:1    瀏覽:

this是JavaScript中常常用到關鍵字,但它在箭頭函數(shù)和常規(guī)函數(shù)中是不同的,因此我們在使用時要知道this在箭頭函數(shù)和常規(guī)函數(shù)中的區(qū)別,知道不同后,才能正確使用它。

箭頭函數(shù)沒有自己的this

與常規(guī)函數(shù)不同,箭頭函數(shù)沒有自己的this和參數(shù)綁定。相反,這些標識符像任何其他變量一樣在詞法范圍內解析。讓我們看一個簡單的例子:

name ="Arrow function"
let me = { 
 name: "Regular function", 
 thisInArrow:() => { 
   console.log("Example of " + this.name); //無 'this' 綁定 
 }, 
 thisInRegular(){ 
   console.log("Example of " + this.name); //'this' 綁定 
 } 
};
me.thisInArrow(); 
me.thisInRegular();

輸出

Example of Arrow function
Example of Regular function

與常規(guī)函數(shù)不同,箭頭函數(shù)沒有自己的this。在箭頭函數(shù)的情況下,this指的是在定義this箭頭函數(shù)的環(huán)境中的this值(即“外部”箭頭函數(shù)),并且在函數(shù)的整個生命周期中保持不變,并且始終綁定到在最近的非箭頭父函數(shù)中。

讓我們再看一個簡單的例子: 

 

 

在函數(shù)表達式的情況下,this指的是在createObject內部創(chuàng)建的對象,在箭頭函數(shù)的情況下,this指的是createObject自身的this。

無論如何執(zhí)行或在何處執(zhí)行,箭頭函數(shù)內部的 this 值始終等于外部函數(shù)的 this 值。換句話說,箭頭函數(shù)可按詞法解析 this,箭頭函數(shù)沒有定義自己的執(zhí)行上下文。

在以下示例中,myMethod() 是箭頭函數(shù) callback() 的外部函數(shù):

const myObject = {
  myMethod(items) {
    console.log(this); // logs "myObject"    
    const callback = () => {
      console.log(this); // logs "myObject"    
    };
    items.forEach(callback);
  }
};

myObject.myMethod([1, 2, 3]); 

輸出

箭頭函數(shù) callback() 中的 this 值等于外部函數(shù) myMethod()this

this 詞法解析是箭頭函數(shù)的重要功能之一。在方法內部使用回調時,要確保箭頭函數(shù)沒有定義自己的 this:不再有 const self = this 或者 callback.bind(this) 這種解決方法。

箭頭函數(shù)沒有自己的參數(shù)綁定

參數(shù)對象在箭頭函數(shù)中不可用,但在常規(guī)函數(shù)中可用。

常規(guī)函數(shù): 

let myFunc = { 
 showArgs(){ 
   console.log(arguments); 
 } 
}; 
myFunc.showArgs(1, 2, 3, 4);

輸出

 

箭頭函數(shù)

let myFunc = { 
 showArgs : ()=> {
      console.log(arguments); 
   }
}; 
myFunc.showArgs(1, 2, 3, 4);

輸出

 

總結

本文通過實例介紹了箭頭函數(shù)和常規(guī)函數(shù)的this值的區(qū)別,通過本文的學習,我們應該了解到箭頭函數(shù)和常規(guī)函數(shù)的this值的不同之處,在使用中要正確處理。

相關文章

標簽: 箭頭函數(shù)  this  
x
  • 站長推薦
/* 左側顯示文章內容目錄 */