ES6学习(4)箭头函数

简介: ES6学习(4)箭头函数

ES6允许使用箭头(=>)定义函数,箭头函数提供了一种更加简洁的函数书写方式,箭头函数多用于匿名函数的定义。
箭头函数的this是静态的,始终指向声明该函数时所在的作用域指向的对象,而不是使用时所在的作用域指向的对象。
箭头函数不能作为构造函数进行实例化。
不能使用 arguments;
普通函数,谁调用,this就指向谁

var name = 'window'; // 其实是window.name = 'window'

var A = {
   
   name: 'A',
   sayHello: function(){
   
      console.log(this.name)
   }
}

A.sayHello();// 输出A

var B = {
   
  name: 'B'
}

A.sayHello.call(B);//输出B

A.sayHello.call();//不传参数指向全局window对象,输出window.name也就是window

改为箭头函数

var name = 'window'; 

var A = {
   
   name: 'A',
   sayHello: () => {
   
      console.log(this.name)
   }
}

A.sayHello();// 还是以为输出A ? 错啦,其实输出的是window

如何指向A呢,外面包一层函数

var name = 'window'; 

var A = {
   
   name: 'A',
   sayHello: function(){
   
      var s = () => console.log(this.name)
      return s//返回箭头函数s
   }
}

var sayHello = A.sayHello();
sayHello();// 输出A 

var B = {
   
   name: 'B';
}

sayHello.call(B); //还是A
sayHello.call(); //还是A

外层函数写成箭头函数,则this也变成了window

ad.addEventListener("click", function(){
   
    // ES6写法
    // 定时器:参数1:回调函数;参数2:时间;
    // 这个this才是ad
    setTimeout(() => this.style.background = 'pink',2000);
    }
)
//错误写法
ad.addEventListener("click", () => {
   
    setTimeout(() => this.style.background = 'pink',2000);
 })
//不使用箭头函数错误写法
ad.addEventListener("click", function(){
   
    setTimeout(function(){
   this.style.background = 'pink';},2000);
});
// 不使用箭头函数正常写法
ad.addEventListener("click", function(){
   
    let _this = this;
    setTimeout(function(){
   
        _this.style.background = 'pink';
    },2000);
});
apply(),bind(),call()

这三个方法的主要作用是改变函数中的this指向。
apply 、 call 、bind 三者第一个参数都是this要指向的对象。
apply 、 call 、bind 三者都可以利用后续参数传参。
bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用。
apply和call只是传参不一样,apply是参数是数组,call的参数需要逐个列举出来。
参考:https://zhuanlan.zhihu.com/p/57204184

相关文章
|
6月前
ES6之箭头函数
ES6之箭头函数
|
7天前
|
JavaScript
哪些场景适合使用 ES6 的箭头函数?
总之,当需要简洁地定义函数、处理回调函数、避免 `this` 指向问题以及进行函数式编程等场景时,ES6的箭头函数都是一个很好的选择。但需要注意的是,箭头函数也有一些限制,如不能作为构造函数使用等,在使用时需要根据具体情况进行选择。
|
15天前
|
安全 JavaScript 前端开发
es6 箭头函数
【10月更文挑战第26天】ES6箭头函数为JavaScript开发者提供了一种更简洁、更直观的函数定义方式,同时其独特的`this`绑定和无`arguments`对象等特性也使得在一些特定场景下的代码编写更加方便和安全,但在使用时也需要注意其与普通函数的区别,以确保正确地使用和理解箭头函数。
103 62
|
19天前
|
自然语言处理
ES6 中箭头函数和普通函数区别
【10月更文挑战第19天】这些仅是对箭头函数和普通函数区别的一些主要方面进行的详细阐述,实际应用中可能还会有更多具体的细节和情况需要进一步探讨和理解。可以根据自己的需求进一步深入研究和实践,以更好地掌握它们在不同场景下的应用。
30 2
|
6月前
|
网络架构
ES6箭头函数的特性
ES6箭头函数的特性
|
6月前
|
小程序
es6学习笔记(四)箭头函数
es6学习笔记(四)箭头函数
|
6月前
Es6箭头函数
Es6箭头函数
63 0
|
6月前
|
自然语言处理 前端开发 安全
【面试题】ES6语法五之箭头函数
【面试题】ES6语法五之箭头函数
|
前端开发
ES6系列笔记-箭头函数
ES6系列笔记-箭头函数
29 1