1.箭头函数是匿名函数,不能作为构造函数不能用new
2.箭头函数内没有arguments
普通函数的arguments和类数组转换成数组:
Array.prototype.slice = function (){
console.log(this); //this = arguments
let newArr = [];
for (let i=0;i<this.length;i++){
newArr.push(this[i])
}
return newArr
}
let arr = [1,2,34];
let arr2 = arr.slice();
arr2[0] = 1000;
console.log(arr,arr2);
/*function fn(){
let arr = Array.from(arguments);
let arr2 = Array.prototype.slice.call(arguments)
let arr3 = [].slice.call(arguments)
console.log(arguments);
console.log(arr,arr2);
}
fn(1,2,3,4,5)*/
3.this指向不同
箭头函数的this指向永远指向父级的上下文
js中的this指向为:
在方法中 谁调用this this就指向谁
没有被调用的时候this指向最高级window
构造函数中的this,指向通过这个构造函数创建出来的实例本身
强制改变this指向可以用 call apply bind