在如今开发者习惯于适用箭头函数来对this指向进行干扰,那么反过来说,不需要进行this指向干扰的情况是不是就不适合箭头函数?
-
构造函数的原型方法需要通过 this 获得实例,因此箭头函数不可以出现在构造函数的原型方法上
function Ad() { this.da = "ppp"; } Ad.prototype.of = () => { console.log(this); //{} }; Ad.prototype.df = function () { console.log(this);//{da:"ppp"} }; let ad = new Ad(); ad.of(); ad.df() -
对于需要获得 arguments 时,箭头函数不具有 arguments 属性,因此在其函数体内无法访问这一特殊的伪数组
function cs() { console.log(arguments);//[1,2,3,4] } let da = () => { console.log(arguments); }; cs(1,2,3,4) da(1,2,3,4,) -
定义一个对象方法时,预期在方法中通过 this 访问对象实例,在下面代码中,getName函数体内的this执行 window,这显然不符合其用意
const peronst = { name: "cs", getName: () => { console.log(this); }, }; peronst.getName(); -
在使用动态回调时,对于类似下面这种对回调的this有特殊场景需求的用法,监听函数的this便无法满其需求,下面代码中事件绑定函数的this指向了window。
let btn = document.getElementById("btn"); btn.addEventListener("click", () => { console.log(this === window); });