箭头函数 用法区别
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 不能用在箭头函数上