name="小刚";
let student={
name:"小明",
printLog:function(){
// 这里绑定了顶层作用域,可以使用变量与方法
console.log(this)
},
printArrowLog:()=>{
// 这里不知道绑定的是哪个作用域,有知道的大咖请回答下
console.log(this)
}
} student.printLog();
/*
{ name: '小明',
printLog: [Function: printLog],
printArrowLog: [Function: printArrowLog]
}
*/
student.printArrowLog();
/*
{}
这里返回了空对象,说明this不是指向window全局对象,也不是指向student对象。奇葩
*/
name="小刚";
let student={
name:"小明",
printLog:function(){
// 这里绑定了顶层作用域,可以使用变量与方法
return ()=>{
console.log("printLog Arrow:"+this)
}
},
printLog1:function(){
// 这里绑定了全局作用域,可以使用window对象的属性
return function(){
console.log("printLog1:"+this)
}
},
printLog2:function(){
// 这里绑定了全局作用域,可以使用window对象的属性
(function(){
console.log("printLog2:"+this)
})()
}
} sayhello=student.printLog();
sayhello1=student.printLog1(); sayhello();
/*
printLog Arrow:小明
this指向:printLog Arrow:[object Object]
从这里我们可以看出这里使用的是student对象里的顶层属性,没有说明问题
*/ sayhello1();
/*
printLog1:小刚
this指向:printLog1:[object global]
从打印的结果来看,我们可以看到打印的name值为小刚,是我在全局进行生命的name属性,说明在外部进行调用,this指向window全局对象 */ student.printLog2();
/*
printLog2:小刚
this指向:printLog1:[object global]
从打印的结果来看,我们可以看到打印的name值为小刚,是我在全局进行生命的name属性,说明生命调用写在一起,this指向window全局对象
*/
name="小刚";
let student={
name:"小明",
functions:{
name:"小飞",
printLog:function(){
// 这里绑定了functions对象作用域,可以使用内部的变量与方法
return ()=>{
console.log("printLog:"+this.name)
}
},
printLog1:function(){
// 这里绑定了顶层作用域,可以使用window的变量与方法
return function(){
console.log("printLog1:"+this.name)
}
}
}
} var pl=student.functions.printLog();
pl();
/*
printLog:小飞 */ var pl1=student.functions.printLog1();
pl1();
/*
printLog1:小刚
*/ /*总结:根据name的值不同,可以查到使用的是哪个作用域的值,进而可以知道this的指向*/

function方法调用call和apply的使用方式:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/call

JS的箭头函数this作用域的更多相关文章

  1. js 之 箭头函数 (未学完)

    js之箭头函数表达式 箭头函数表达式的语法比函数表达式更短,并且没有自己的this,arguments,super或 new.target.这些函数表达式更适用于那些本来需要匿名函数的地方,并且它们不 ...

  2. js中箭头函数和普通函数this的区别

    最近在学习angularJs的时候由于里面涉及到了箭头函数,箭头函数除了声明上有点区别以外,和普通函数最主要的区别还是在this的问题上. Js中函数中嵌套的函数this不会 “继承”.比如说以下代码 ...

  3. => js 中箭头函数使用总结

    箭头函数感性认识 箭头函数 是在es6 中添加的一种规范 x => x * x 相当于 function(x){return x*x} 箭头函数相当于 匿名函数, 简化了函数的定义. 语言的发展 ...

  4. js之箭头函数

    原文 ES6标准新增了一种新的函数:Arrow Function(箭头函数). 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: ...

  5. 【js】箭头函数与普通函数的异同

    普通函数在es5中就有了,箭头函数是es6中出现的函数形式,当然也可以继续用es5写法. 普通函数大家知道: 形式基本一致 来看看箭头函数: 开发时根据实际情况可以省略一些东西 单条处理可以省略ret ...

  6. js中箭头函数 及 针对箭头函数this指向问题引出的单体模式

    ES6允许使用“箭头”(=>)定义函数 var f = a = > a //等同于 var f = function(a){ return a; } 如果箭头函数不需要参数或需要多个参数, ...

  7. [译]ES6箭头函数和它的作用域

    原文来自我的前端博客: http://www.hacke2.cn/arrow-functions-and-their-scope/ 在ES6很多很棒的新特性中, 箭头函数 (或者大箭头函数)就是其中值 ...

  8. ES6箭头函数和它的作用域

    原文来自我的前端博客: http://www.hacke2.cn/arrow-functions-and-their-scope/ http://es6rocks.com/2014/10/arrow- ...

  9. ES6箭头函数Arrow Function

    果然,隔了很长时间都没有来博客园上逛了...... 前一段时间一直在忙我们参加的一个比赛,转眼已经好久没有来逛过博客园了,果然还是很难坚持的...... 今天总算还是想起来要过来冒个泡,强行刷一波存在 ...

随机推荐

  1. Web应用程序攻击和检查框架w3af

    实验目的 利用w3af爬虫插件探测出目标网站的目录结构. 实验原理 1) W3AF是一个web应用安全的攻击.审计平台,通过增加插件来对功能进行扩展.这是一款用python写的工具,可以查看所有源代码 ...

  2. 【计理01组30号】Java 实现日记写作软件

    项目分析 代码设计 com.shiyanlou.entity User.java package com.shiyanlou.entity; public class User { private S ...

  3. win7重装系统过程关机 电脑开机黑屏 硬盘无法识别 无法使用u盘启动

    问题:win7重装系统中强制重启导致硬盘无法识别,开机后无法选择使用u盘启动盘启动,电脑黑屏,将硬盘拆掉可以使用u盘启动,使用SATA转接口在win7中有反应但无法识别 无法识别原因:重装系统过程中断 ...

  4. 探究Spring原理

    探究Spring原理 探究IoC原理 首先我们大致了解一下ApplicationContext的加载流程: 我们可以看到,整个过程极为复杂,一句话肯定是无法解释的,所以我们就从ApplicationC ...

  5. linux多进/线程编程(7)——多线程1(线程的创建,回收,分离,设置线程属性等)

    参考资料: 1.博客1:https://blog.csdn.net/zhou1021jian/article/details/71531699 2.博客2:https://blog.csdn.net/ ...

  6. Cache写机制

    Cache 写机制分为:Write-through和Write-back Write-through(直写模式) 定义:在数据更新时,同时写入缓存Cache和后端存储(主存): 优点:操作简单: 缺点 ...

  7. LeetCode-023-合并K个升序链表

    合并K个升序链表 题目描述:给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例说明请见LeetCode官网. 来源:力扣(LeetCode) 链 ...

  8. ElasticSearch集成SpringBoot与常见使用方法

    目录 一.导包 二.核对导入的ES版本 修改导入版本 三.写配置类 四.开始测试 索引操作 1.创建索引 2.查看索引是否存在 3.删除索引 文档操作 1.添加文档 2.查看文档是否存在 3.修改文档 ...

  9. 1. 企业级调度器LVS初识、工作模式详解

    想学习更多相关知识请看博主的个人博客 1. LVS官网 LVS 时全球最流程的四层负载均衡开源软件. LVS 官网:http://www.linuxvirtualserver.org/ 2.Linux ...

  10. github打开之后下载缓慢或者下载不了问题的解决

    我是一点击下载就会显示下载不了,然后按照网上的教程看的修改hosts文件.大家可以先用这个方法,如果还是不行就可以按照以下操作. 1.登录https://gitee.com/(没有账号的先注册).2. ...