JavaScript ES6 箭頭函數 匿名函數 普通函數


箭頭函數

箭頭函數是ES6的新特性,簡化了函數的寫法

普通函數

this指向調用者
具有prototype
this指向可以被call/apply/bind改變
普通函數的this在運行時創建,箭頭函數的this是聲明時確定

匿名函數

表現為function后面不帶名字的函數,但是可以用一個變量接收,通過執行這個變量來執行這個函數
this指向window
具有prototype
this指向可以被call/apply/bind改變

箭頭函數

1 沒有原型prototype
2 因為沒有原型,因此沒有super用於訪問原型屬性
3 沒有arguments,如果有一定是父級作用域的arguments
4 箭頭函數自身沒有this,它的this來源於作用域鏈(作用域相對於函數,原型相對於對象),this指向依然是父級作用域的this指向。普通函數的this在運行時創建,箭頭函數的this是聲明時確定
5 箭頭函數是匿名函數,所謂匿名函數,就是function后面不帶名字的函數,但是可以用一個變量接收,通過執行變量來執行這個函數
6 箭頭函數中this指向無法被修改,如bind、call、apply
7 因為無法修改this指向,因此不能作為構造函數使用(構造函數的this永遠指向由它實例化出來的對象,箭頭函數無法對創建出來的實例進行this綁定),它和new關鍵字一起使用時會拋出異常
8 因為無法作為構造函數,因此不能使用new.target關鍵字返回創建實例的構造函數(類)本身

new.target的使用

        //new.target 用於方法內
        //當方法作為構造時,返回創建該實例的構造函數
        //當方法不作為構造函數時,返回undefined
        //可用於判斷是否使用new 關鍵字創造了實例
        function Animal(){
            console.log(new.target)
        }

        Animal()// undefined

        new Animal();// Animal


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM