笔记一:箭头函数和普通函数的区别

200 阅读1分钟

前言:作为一名不爱码字的前端,在heightzhang大神的教导下开始码字做笔记总结啦!

此贴内容参考奇舞周刊,用作整理知识点。

1 箭头函数没有prototype,因此没有this。普通函数的prototype指向原型对象。

    let a = () => {};
    console.log(a.prototype) // undefined

2 箭头函数里this指向继承自外层函数的this。普通函数的this指向调用的对象。

    // 箭头函数
    (() => {
       console.log(this) // window
    })()
    
    // 对象调用的函数
    let obj = {
        f: function () {
            console.log(this)
        }
    }
    obj.f() // obj
    
    // 普通函数
    function f () {
        console.log(this) // window(全局声明的时候,所有声明都会变成window对象的属性)
    }

3 箭头函数this的指向无法改变。普通函数的this可以通过call,apply,bind改变

4 普通函数在非严格模式中this指向window,严格模式下指向undefinded。在外层没有普通函数时,箭头函数在严格模式和非严格模式下,this都指向window。

5 箭头函数没有arguments属性。

6 箭头函数不能new,因为没有constructor构造器。普通函数new之后会生成实例对象。