// 箭头函数
        // 在匿名函数中,使用 => 箭头来替换 关键词 function 
        // 箭头定义下 () 和 {} 之间
        // 等于在使用新的关键词声明 函数
        // 箭头函数的主要作用是,改变 函数中的 this 指向 
        // 为了 配合 构造函数语法
        // 普通的匿名函数
        var fun = function(){};
        // 箭头函数声明的匿名函数
        var fun = () => {}
        // 如果只有一个形参要定义,可以不写()
        var fun = function(e){}
        var fun = (e) => {}
        var fun = e => {}
        // {}中如果只有一行执行程序,可以不写{}
        var fun = function(){console.log();}
        var fun = () => { console.log(); }
        var fun = () => console.log();
        // 只有一个参数,并且只有一行代码,(),{}都可以不写
        var fun = function(e){console.log(e);}
        var fun = e => { console.log(e); }
        var fun = e => console.log(e);
 
 
  <div>123</div>
    <script>
        const oDiv = document.querySelector('div');
        const arr = [1,2,3,4,5];
        console.dir(arr);
        
        // 函数中的this指向
        // this 只 存在于 函数,构造函数中 才会有 this
        // 其他程序语句中是没有this的
        // 如果你该不清楚this指向是谁,直接在程序中console.log(this),瞅瞅
        // this的作用是 替换替代,this指向的对象
        // 在对象中的this,指向的是,定义这个函数的对象本身
        // this.属性等于就是 这个 对象.属性
        // const fdjkasfjdsiauewrjnewkj = {
        //     name:'张三',
        //     age:18,
        //     sex:'男',
        //     fun:function(){
        //         console.log(this);
        //         console.log(this.name , this.age , this.sex);
        //     }
        // }
        // fdjkasfjdsiauewrjnewkj.fun();
        // 函数中的this指向
        // 普通函数 ---- 不是构造函数,不是箭头函数等,就是通过function声明的函数
        
        // this指向是window
        function fun1(){
            console.log(this);
        }
        fun1();
        window.fun1();
        
        // this指向是window
        var fun2 = function(){
            console.log(this);
        }
        fun2();
        window.fun2();
        
        // this指向是存储这个函数的对象
        // const obj = {fun:function(){}}
        obj.fun()
        
        // this指向是绑定事件的标签对象
        // e事件对象,指向的是触发事件的标签对象
        // oDiv.onclick = function(){
        //     console.log(this);
        // }
        // this指向是绑定事件的标签对象
        // document.addEventListener('click' , function(){console.log(this)} )
        
        // this指向是window  
        // arr.forEach(function(){console.log(this)});
        
        // this指向是window  
        // setInterval( function(){
        //     console.log(this);
        // } , 1000 );
        // this指向是window  
        // setTimeout( function(){
        //     console.log(this);
        // } , 1000 );
        // 总结:
        // window : 是 BOM 操作的顶级对象
        //          JavaScript会把 声明式定义的函数 赋值式的匿名函数 存储在 window顶级对象中
        //          调用 window中定义的函数方法,可以不写 window    alert()  window.alert()
        //          调用 fun1()  实际上,本质是在调用 window.fun1()
        // 对象   : 调用对象中函数,通过  对象.函数键名()
        // 以上两种情况,this指向的都是 点之前的对象
        // 事件处理函数 : on...绑定语法 addEventListener 监听语法
        //               this指向都是 函数前 绑定函数的标签对象
        // 定时器,延时器 : 实际也是存储在 window 中
        //                调用时 实际上也是 window.定时器  window.延时器
        // forEach 的 this 指向是 window
        //         forEach 是存储在 数组中 
        //         理论上,语法是 arr.forEach
        //         理论上,this指向应该是 arr 数组
        //         只有函数有this指向,arr数组本身是没有this指向的
        //         没有this指向,指向的是父级程序的this指向,arr的父级,就是window顶级对象
        // 总结: 通过 function 声明的函数,this指向的都是
        //       调用函数时,函数之前写的内容
        //       数组是特殊的内容,forEach 循环变量数组, this指向window
    </script>

箭头函数 函数中的this指向的更多相关文章

  1. 改变函数中的 this 指向——神奇的call,apply和bind及其应用

    在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ...

  2. 箭头函数,闭包函数中的this指向

    在javscript中,this 是在函数运行时自动生成的一个内部指针,它指向函数的调用者. 箭头函数有些不同,它的this是继承而来, 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象. ...

  3. JS回调函数中的this指向(详细)

    首先先说下正常的this指向问题 什么是this:自动引用正在调用当前方法的.前的对象. this指向的三种情况 1. obj.fun()     fun中的this->obj,自动指向.前的对 ...

  4. Javascript回调函数中的this指向问题

    使用js中的定时器(setInterval,setTimeout),很容易会遇到this指向的问题. 直接上例子: 1 var name = 'my name is window'; 2 var ob ...

  5. 彻底搞清函数中的this指向

    近日阅读<javascript设计模式与开发实践> 书中的apply和call调用函数层出不穷,很多妙用: 函数中的this是根据调用方式来决定的 函数调用方式有4中 1.直接调用 a(. ...

  6. React之函数中的this指向

    我们都知道在React中使用函数时,有两种写法,一是回调函数,二是直接调用,但需要在构造函数中绑定this,只有这样,函数中的this才指向本组件 总结一下没有绑定this的函数中的this指向 不管 ...

  7. Python函数参数中的冒号与箭头

    在一些Python的工程项目中,我们会看到函数参数中会有冒号,有的函数后面会跟着一个箭头,你可能会疑惑,这些都是什么东西? 其实函数参数中的冒号是参数的类型建议符,告诉程序员希望传入的实参的类型.函数 ...

  8. js闭包中的this(匿名函数中的this指向的是windows)

    js闭包中的this(匿名函数中的this指向的是windows) 一.总结 1.普通函数中的this指向的是对象,匿名函数中的this指向的是windows,和全局变量一样 2.让匿名函数中的thi ...

  9. JS的一些总结(函数声明和函数表达式的区别,函数中的this指向的问题,函数不同的调用方式,函数也是对象,数组中的函数调用)

    一.函数声明和函数表达式的区别: 函数声明放在if——else语句中,在IE8中会出现问题 函数表达式则不会 <script> if(true){ function f1(){ conso ...

  10. js函数中this的指向

    本文是我个人对this指向的一些理解,如有不足之处,还望大家可以批评指正,在此先谢过了! 首先,我们来回顾一下ES5里函数的几种调用方式: 1⃣️直接调用 foo(); 2⃣️方法调用 obj.foo ...

随机推荐

  1. 欢迎 Llama 3:Meta 的新一代开源大语言模型

    介绍 Meta 公司的 Llama 3 是开放获取的 Llama 系列的最新版本,现已在 Hugging Face 平台发布.看到 Meta 持续致力于开放 AI 领域的发展令人振奋,我们也非常高兴地 ...

  2. 【走进RDS】之SQL Server性能诊断案例分析

    简介: 数据库性能诊断不仅对其数据库技能要求较高,而且需要大量的前期准备工作,如收集各种性能基线.性能指标和慢SQL日志等,尤其是面对多数据库性能调优时,往往事倍功半. 客户的困扰 前几天某程序员小王 ...

  3. Hologres揭秘:深度解析高效率分布式查询引擎

    简介: 从阿里集团诞生到云上商业化,随着业务的发展和技术的演进,Hologres也在持续不断优化核心技术竞争力,为了让大家更加了解Hologres,我们计划持续推出Hologers底层技术原理揭秘系列 ...

  4. 函数式编程的Java编码实践:利用惰性写出高性能且抽象的代码

    ​简介: 本文会以惰性加载为例一步步介绍函数式编程中各种概念,所以读者不需要任何函数式编程的基础,只需要对 Java 8 有些许了解即可. ​ 作者 | 悬衡 来源 | 阿里技术公众号 本文会以惰性加 ...

  5. Serverless 架构模式及演进

    ​简介: Serverless 架构从使用技术上有计算,数据存储,消息通信,我们可从运维性,安全性,可靠性,可扩展性,成本几个角度来衡量架构的优劣.本文会介绍一些常见的业务场景,探讨如何使用 Serv ...

  6. 基于Python语言的数据可视化工具

    在数据分析中常用的图表可以使用使用 python语言的 matplotlib 和 seaborn 库选择要显示的可视化对象. 一.Matplotlib Matplotlib 是一个 Python 的 ...

  7. Django之路由层、视图层、模板层介绍

    一.Django请求生命周期 1.路由层urls.py Django 1.11版本 URLConf官方文档 1.1 urls.py配置基本格式 from django.conf.urls import ...

  8. Multisim仿真验证之二极管的特性参数

    二极管的特性 正向 R1 10% 20% 30% 50% 70% 90% Vd/mV 299 543 583 608 627 658 Id/mA 0.01 0.1 0.6 1.4 2.8 7.2 rd ...

  9. 『手撕Vue-CLI』添加自定义指令

    前言 经上篇『手撕Vue-CLI』添加帮助和版本号的介绍之后,已经可以在控制台中输入 nue --help 来查看帮助信息了,但是在帮助信息中只有 --version,--help 这两个指令,而 v ...

  10. Ubuntu更新源文件报错:E: 仓库 “http://ppa.launchpad.net/chris-lea/node.js/ubuntu bionic Release” 没有 Release 文件。

    E: 仓库 "http://ppa.launchpad.net/chris-lea/node.js/ubuntu bionic Release" 没有 Release 文件. 一条 ...