// (1). 箭头函数this为父作用域的this,不是调用时的this
let per = {
name: "zs",
init: function () {
document.body.onclick = () => {
console.log(this);
}
}
}
per.init();
// (2). 箭头函数不能作为构造函数,不能使用new
// (3). 箭头函数没有arguments,caller,callee
// 箭头函数本身没有arguments,如果箭头函数在一个function内部,它会将外部函数的arguments拿过来使用。
// (4). 箭头函数通过call和apply调用,不会改变this指向,只会传入参数
let obj2 = {
a: 10,
b: function (n) {
let f = (n) => n + this.a;
return f(n);
},
c: function (n) {
let f = (n) => n + this.a;
let m = {
a: 20
};
return f.call(m, n);
}
};
console.log(obj2.b(1));// 11
console.log(obj2.c(1)); // 11
//(5). 箭头函数没有原型属性
// (6). 箭头函数不能作为Generator函数,不能使用yield关键字
// (7). 箭头函数返回对象时,要加一个小括号
// (8). 箭头函数在ES6 class中声明的方法为实例方法,不是原型方法
// (9). 多重箭头函数就是一个高阶函数,相当于内嵌函数
let per2 = function (a) {
return function (b) {
return a + b
}
}
// 箭头函数
let per3 = a => b => a + b
console.log(per3(2)(3));
// (10).箭头函数常见错误
let a = {
foo: 1,
// this 指向window
bar: () => console.log(this.foo)
}
a.bar() //undefined
// bar函数中的this指向父作用域,而a对象没有作用域,因此this不是a,打印结果为undefined