ES6 箭头函数及this

1、箭头函数

<script type="text/javascript">
//以前定义函数
let fun=function () {
console.log('123');
}
fun();
//现在可以简化下,用箭头函数
let fun1=()=>{
console.log('123');
}
fun1();
//然后假如函数体只有一条语句或者是表达式的时候{}可以省略
let fun2=()=>console.log(123);
fun2();
//加形参情况
let fun3=(a)=>console.log(a);
fun3('123');
//只有一个形参的时候 ()可以省略
let fun4=a=>console.log(a);
fun4('123');
//多个形参
let fun5=(x,y)=>console.log(x,y);
fun5('123','456')
</script>

2、this

箭头函数没有自己的this,箭头函数的this不是调用的时候决定的,而是再定义的时候所在的对象就是它的this

箭头函数的this看外层是否有函数,

  如果有,外层函数的this就是内部调用箭头函数的this

  如果没有,则this是window

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button id="btn1">按钮1</button>
<button id="btn2">按钮2</button>
<script type="text/javascript">
let btn1=document.getElementById('btn1');
let btn2=document.getElementById('btn2');
btn1.onclick=function(){
alert(this);//按钮1 这里的this是 调用的时候的btn1对象;
};
btn2.onclick=()=>{
alert(this);//按钮2,this是window对象;
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button id="btn1">按钮1</button>
<button id="btn2">按钮2</button>
<script type="text/javascript">
let btn1=document.getElementById('btn1');
let btn2=document.getElementById('btn2');
//不用箭头函数
let obj1={
name:'jack',
age:11,
getName(){
btn1.onclick=function(){
console.log(this);
}
}
}
obj1.getName();//this 就是按钮1 let obj2={
name:'jack1',
age:11,
getName() {
btn2.onclick =()=>console.log(this);
}
}
obj2.getName();//this 就是 obj2,因为箭头函数是定义再对象的回调方法里,所以这里的this是obj2; </script>
</body>
</html>

ES6 箭头函数及this的更多相关文章

  1. es6箭头函数讲解

    es6箭头函数的用法 箭头函数是es6的一种函数的简写方法. 如下: var f = v = > v; //等同于 var f = function(v){ return v; } var su ...

  2. es6箭头函数 this 指向问题

    es5中 this 的指向 var factory = function(){ this.a = 'a'; this.b = 'b'; this.c = { a:'a+', b:function(){ ...

  3. ES6 — 箭头函数

    一 为什么要有箭头函数 我们在日常开发中,可能会需要写类似下面的代码 const Person = { 'name': 'little bear', 'age': 18, 'sayHello': fu ...

  4. 前端分享----JS异步编程+ES6箭头函数

    前端分享----JS异步编程+ES6箭头函数 ##概述Javascript语言的执行环境是"单线程"(single thread).所谓"单线程",就是指一次只 ...

  5. ES6 箭头函数 this 指向

    ES6 箭头函数 this 指向 箭头函数有几个使用注意点: 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象. 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个 ...

  6. ES6 箭头函数(Arrow Functions)

    ES6 箭头函数(Arrow Functions) ES6 可以使用 "箭头"(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器). 一.语法 具有一个参数的简单函 ...

  7. ES6箭头函数基本用法

    ES6箭头函数基本用法 ``` window.onload = function(){ alert(abc); } //箭头函数 window.onload = ()=>{ alert(&quo ...

  8. ES6 箭头函数this指向问题

    var name = "window"; var person1 = { name: "person1", show1: function() { consol ...

  9. Vue ES6箭头函数使用总结

    Vue ES6箭头函数使用总结   by:授客 QQ:1033553122   箭头函数 ES6允许使用“箭头”(=>)定义函数: 函数不带参数 定义方法:函数名称 = () => 函数体 ...

  10. ES6 -箭头函数 ,对象的函数解构

    ES6 -箭头函数: //es6 中的箭头函数和扩展 //es5的写法 // function add(a,b){ // return a + b; // } // add(1,2); //3 fun ...

随机推荐

  1. NVIDIA GPU的神经网络自动调度

    NVIDIA GPU的神经网络自动调度 针对特定设备和工作负载的自动调整对于获得最佳性能至关重要.这是一个关于如何使用自动调度器为NVIDIA GPU调整整个神经网络的资料. 为了自动调整一个神经网络 ...

  2. Lidar激光雷达与Radar雷达

    Lidar激光雷达与Radar雷达 自动驾驶技术正迅速成为汽车工业的驱动力.来自全球的汽车制造商正在与Google等顶级高科技巨头以及其他知名初创公司合作,共同开发下一代自动驾驶汽车.中国也开辟了自动 ...

  3. C++标准模板库(STL)——vector常见用法详解

    vector的定义 vector<typename> name; 相当于定义了一个一维数组name[SIZE],只不过其长度可以根据需要进行变化,比较节省空间,通俗来讲,vector就是& ...

  4. AJAX第二天笔记

    AJAX day1 jquery中的ajax 拦截请求: $.ajaxPrefilter()  jquery方法请求参数的本质: 无论我们填写的何种形式的参数,都会被jQuery转换成查询字符串形式传 ...

  5. zookeeper命令行练习,熟练节点权限, 数组越界异常解决方案

    https://www.cnblogs.com/qlqwjy/p/10517231.html zookeeper 创建持久有序节点时候报错,我的版本号是3.4.12, 亲测有效 https://blo ...

  6. JUC 并发编程--09, 阻塞队列: DelayQueue, PriorityBlockingQueue ,SynchronousQueue, 定时任务线程池: ScheduledThreadPoolExecutor

    先看DelayQueue 这个是用优先级队列实现的无界限的延迟队列,直接上代码: /** * 这个是 {@link DelayQueue} 延时队列 的验证使用类 */ class MyDelayed ...

  7. Qt中的内存回收机制

    Qt中的内存回收机制 在Qt中创建对象的时候会提供一个 Parent对象指针(可以查看类的构造函数),下面来解释这个parent到底是干什么的. QObject是以对象树的形式组织起来的.当你创建一个 ...

  8. 【NX二次开发】Block UI 截面构建器

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  9. Mybatis中9种经典的设计模式!你知道几个?

    虽然我们都知道有23个设计模式,但是大多停留在概念层面,真实开发中很少遇到.Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式. Mybatis至少 ...

  10. AIOps:企业运维新力量!

    摘要:企业运维需求及挑战,来看看华为AIOps如何解决! 本文分享自华为云社区<[云驻共创]AIOps?企业运维新力量!>,原文作者:启明. 国际惯例,我们先介绍一下AIOps的概念:AI ...