美文网首页JavaScript技术js css html
ES6学习(4)箭头函数

ES6学习(4)箭头函数

作者: 哆啦C梦的百宝箱 | 来源:发表于2022-05-11 10:36 被阅读0次
  1. ES6允许使用箭头(=>)定义函数,箭头函数提供了一种更加简洁的函数书写方式,箭头函数多用于匿名函数的定义。
  2. 箭头函数的this是静态的,始终指向声明该函数时所在的作用域指向的对象,而不是使用时所在的作用域指向的对象。
  3. 箭头函数不能作为构造函数进行实例化。
  4. 不能使用 arguments;
  5. 普通函数,谁调用,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
  1. 改为箭头函数
var name = 'window'; 

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

A.sayHello();// 还是以为输出A ? 错啦,其实输出的是window
  1. 如何指向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
  1. 外层函数写成箭头函数,则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);
});
  1. apply(),bind(),call()
  • 这三个方法的主要作用是改变函数中的this指向。
  • apply 、 call 、bind 三者第一个参数都是this要指向的对象。
  • apply 、 call 、bind 三者都可以利用后续参数传参。
  • bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用。
  • apply和call只是传参不一样,apply是参数是数组,call的参数需要逐个列举出来。
    参考:https://zhuanlan.zhihu.com/p/57204184

相关文章

  • ES6箭头函数简介

    @(JS技巧)[ES6|箭头函数] ES6箭头函数(Arrow Functions) ES6可以使用“箭头”(=>...

  • es6全家桶(二)—— 箭头函数

    es6全家桶(二)—— rest参数、箭头函数 箭头函数 ES6 允许使用“箭头”(=>)定义函数。 var f ...

  • es6、js、css、jquery、vue以及程序设计 知识点总

    es6 列举常用的es6特性。 箭头函数this的指向。 eg:箭头函数的特性 箭头函数内部没有construc...

  • ES6新特性5:函数的扩展之箭头函数

    箭头函数在ES6中最常用的特性,学习好至关重要,特别在Vue项目和React项目。 箭头函数:ES6中使用(=>)...

  • 箭头函数

    ES6允许使用“箭头”(==>)定义函数。 箭头函数 等同于

  • 学习 ES 6 箭头函数

    箭头函数的用法 ES6 允许使用“箭头”(=>)定义函数。 箭头函数的一个用处是简化回调函数。 箭头函数 this...

  • JavaScript箭头函数

    ES6新语法箭头函数 箭头函数是ES6新语法,因为语法简单、可读性好,所以使用的也很多。箭头函数也是匿名函数,区别...

  • 关于ES6箭头this的指向问题

    ES6 允许使用 “ 箭头 ” (=>)定义函数。 箭头函数 填 坑。 this的指向是 向上查找 非箭头函数的...

  • ES6箭头函数(Arrow Functions)

    箭头函数是什么?(What) 箭头函数 (Arrow Functions)也称“胖箭头函数”,是ES6全新的特性。...

  • 2019-01-11

    ES6 箭头函数 箭头函数表示法:()=>console.log('Hello') 箭头函数和普通函数的区别 和普...

网友评论

    本文标题:ES6学习(4)箭头函数

    本文链接:https://www.haomeiwen.com/subject/agwayrtx.html