箭头函数的出现就是为了解决ES5中this指向混乱的问题
箭头函数的this指向来自父级上下文, 箭头函数没有自己的this
箭头函数的this不会在调用的时候被改变, 在箭头函数声明的时候他的this就已经被永久的确定
箭头函数与普通函数的区别
1.箭头函数是匿名函数 箭头函数不能作为构造函数使用 不能使用new
2.箭头函数的this,始终指向父级上下文
3.箭头函数不能通过call apply bind改变this指向,但是可以通过这些方法传递参数
4.箭头函数没有原型属性
5.箭头函数没有arguments属性,可以用...展开运算符来接收所有的参数集合
js中的this指向
1.方法是谁调用的,那么在方法中this就指向谁(.前面是谁, this就是谁)
2.如果没有调用 this始终指向window
3.构造函数中的this, 指向实例本身
4.强制改变this call apply bind
5.ES5中的this解决方案 一般使用闭包将父级的this指向进行暂存,然后在子集作用域中去使用这边暂存的变量,来去确定this 指向
箭头函数的出现就是为了解决ES5中this指向混乱的问题
箭头函数的this指向来自父级上下文, 箭头函数没有自己的this
箭头函数的this不会在调用的时候被改变, 在箭头函数声明的时候他的this就已经被永久的确定
普通函数的arguments和类数组转换成数组
1.把类数组转换为数组
function fn() {
/* console.log(arguments);
// let arr = Array.from(arguments); 方法1
let arr = [...arguments]; // 方法2
console.log(arr); */
// let arr = Array.prototype.slice.call(arguments); // 方法3
let arr = [].slice.call(arguments); // 方法4 简写
console.log(arr);
}
fn(30, 20, 10);
2.直接类数组借用数组方法
function fn() {
[].forEach.call(arguments, (item) => {
console.log(item);
});
}
fn(10, 20, 30);