箭头函数 () => {}

var d = {
     a: 1234,
     geta: function () {
         getaa = () => {
              console.log(this.a);
              function g() {
                    console.log(this.a);
              }
              g(d);
         }
         getaa();
    }
}
d.geta();
// 1234
// undefined   箭头函数内部的普通函数,有自己的this不继承。

var d = {
    a: 1234,
    geta: function () {
        function getaa () {
            console.log(this.a);
            g = () => {
                console.log(this.a);
            }
            g(d);
        }
        getaa();
    }
}

d.geta();
// undefined   第一个undefined是有自己的this
// undefined   第二个继承了第一个,也是undefined

let a = {

    foo: 1,
    bar: () => {
        console.log(this.foo);
    }
}

a.bar();
// undefined 箭头函数没有父级函数作用域,所以是window对象,在window上没有定义foo, 所以undefined

1,箭头函数不能new

2,箭头函数没有自己的this,arguments,指向父级作用域!!!

3,箭头函数不支持call apply bind,可以传参

4,写法 () => {}  如果返回对象需要用() 包裹

5,()=> () => () => {}  高阶箭头函数调用,是嵌套的简写

6,箭头函数没有 prototype 属性,在class内声明箭头函数,会被认为是一个实例属性,如果是普通函数是prototype原型属性,因此可以用箭头来声明实例属性,但是实例化的过程中会增加内存,不是从父级继承的方法。

7,es6的生成器属性,generator/yield 不能用在箭头函数上

猜你喜欢

转载自www.cnblogs.com/the-last/p/11451146.html