摘要:箭頭函數的指向箭頭函數的指向的地方并不是函數調用的詞法作用域,而是聲明時的詞法作用于。基于這個新的改變,可以看出在改變以往的不合理的地方下足了功夫。試圖希望讓變成一門面向對象的強語言的決心。
箭頭函數的this指向 this
箭頭函數的this指向的地方并不是函數調用的詞法作用域,而是聲明時的詞法作用于。詳情請看下例:
var fn = function(){ console.log(this); } var obj = { prop : fn } obj.prop() //{prop: ?n}
var fn = () => { console.log(this); } var obj = { prop : fn } obj.prop() //Window
上面兩段代碼中,不同的僅僅是function的聲明方式,一個沿用傳統的function關鍵字聲明,一個使用了新的 => 箭頭函數進行聲明,然后這兩個this指向的結果完全不同,一個按照傳統的方式,指向了被調用的詞法作用域,也就是obj,所以this指向了obj,而另一個則是直接指向了聲明fn方法的詞法作用域,也就是Window。需要注意的地方基于這個新的改變,可以看出ES6在改變javascript以往的不合理的地方下足了功夫。試圖希望讓javascript變成一門面向對象的強語言的決心。
基于新特性,以往在使用匿名函數的時候,不能再隨意使用this了,如:
elem.addEventListener("click",function(){ //this ==> elem },false) elem.addEventListener("click",() => { //this ==> 該代碼的詞法作用域 如 Window },false)
這里如果直接按原來的模式將function 替換成 => 的話就會出現上述問題,需要注意。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/97827.html
摘要:第二種情況是箭頭函數的如果指向普通函數它的繼承于該普通函數。箭頭函數的指向全局,使用會報未聲明的錯誤。 showImg(https://segmentfault.com/img/remote/1460000018610072?w=600&h=400); 箭頭函數是ES6的API,相信很多人都知道,因為其語法上相對于普通函數更簡潔,深受大家的喜愛。就是這種我們日常開發中一直在使用的API...
摘要:基本用法在中允許使用來定義函數,如下就等同于從上面可以看出,在箭頭左側的是代表參數,若參數只有一個,可以省略,箭頭右側的表示函數代碼塊,若代碼塊里面是個返回值,則可以省略不寫無參數情況若箭頭函數不需要參數,則左側用代替,如下無參數情況無參數 基本用法 在ES6中允許使用 => 來定義函數,如下: var f = a => a; console.log(f(1)); //1 就...
摘要:注意因為箭頭函數內部的是指向外層代碼塊的最近的,例中的函數的,所以我們可以通過改變外層代碼塊的的指向從而改變箭頭函數中的指向例中使用了函數的方法。 一、this關鍵字小測試 ES6箭頭函數體中的this指向哪里? 在回答這個問題之前先來揣揣你對this關鍵字的了解程度:(讓我們回到ES6之前)題: var obj = { a: function() { cons...
摘要:但是因為箭頭函數沒有自己的,它的其實是繼承了外層執行環境中的,且指向永遠不會隨在哪里調用被誰調用而改變,所以箭頭函數不能作為構造函數使用,或者說構造函數不能定義成箭頭函數,否則用調用時會報錯報錯箭頭函數沒有自己的箭頭函數沒有自己的對象。 這篇文章我們來了解一下ES6中的箭頭函數。首先會介紹一下箭頭函數的基本語法,因為基本語法比較好理解,我們用示例做簡單介紹即可。之后,我們重點來討論一下...
摘要:對象的指向是可變的,但是在箭頭函數中,它是固定的。同樣的由于箭頭函數沒有自己的所以傳統的顯性綁定無效內部的指向外部在的學習中,的指向問題一直是個難點,特別是在對象方法中使用時,必須更加小心。由此箭頭函數在很大程度上減少了我們的困擾。 什么是箭頭函數 用法 ES6 允許使用箭頭(=>)定義函數 測試 var p1 = document.getElementById(test1)...
閱讀 2071·2023-04-25 22:58
閱讀 1419·2021-09-22 15:20
閱讀 2704·2019-08-30 15:56
閱讀 1996·2019-08-30 15:54
閱讀 2112·2019-08-29 12:31
閱讀 2736·2019-08-26 13:37
閱讀 600·2019-08-26 13:25
閱讀 2103·2019-08-26 11:58