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

相关文章
|
5月前
ES6之箭头函数
ES6之箭头函数
|
5月前
在ES6中,箭头函数可以像传统函数一样使用`this`吗?
在ES6中,箭头函数可以像传统函数一样使用`this`吗?
30 1
|
5月前
|
网络架构
ES6箭头函数的特性
ES6箭头函数的特性
|
5月前
|
小程序
es6学习笔记(四)箭头函数
es6学习笔记(四)箭头函数
|
5月前
Es6箭头函数
Es6箭头函数
56 0
|
5月前
|
自然语言处理 前端开发 安全
【面试题】ES6语法五之箭头函数
【面试题】ES6语法五之箭头函数
|
11月前
|
前端开发
ES6系列笔记-箭头函数
ES6系列笔记-箭头函数
26 1
|
自然语言处理 JavaScript
ES6中的箭头函数及其使用场景
ES6 (ECMAScript 2015) 引入了许多新特性,其中之一就是箭头函数。箭头函数是一种更加简洁和便捷的函数定义方式,本文将详细介绍 ES6 中的箭头函数,并探讨其适用场景及注意事项。
116 0