this是函数内部的一个对象,当函数被某对象调用时,this就指向该对象

1、在构造函数中

let name='window'
function Person(name,age){this.name=name;this.age=age
}

this绑定在实例化的对象上

let man=new Person('hkj',21)
console.log(man.name)   //hkj

直接调用,this表示window

fun();

2、在箭头函数中

var name='hkj'
function fun(){var name="hkj1"return ()=>{var name='hkj2'console.log(this.name)          //hkjreturn ()=>{var name='hkj3'console.log(this.name)        //hkj}}
}
fun()()()

嵌套在函数中的this与调用最外层非箭头函数this相同,最外层非箭头函数为fun(),其中的this指向window。

3、当做属性调用

var name='window'
function fun(){var name='fun'console.log(this.name)
}
let obj={fun:fun,name:'hkj'
}
obj.fun()       //hkj

被当成属性调用时,函数中this指向最后一个调用函数的对象,这里指向obj

4、定时器this指向(普通函数)

var name='window'
function hello(){this.name = 'xjy';      //setTimeout中的this并不会沿着作用域链向上找,而是指向windowsetTimeout(function(){console.log(this.name)}, 100);
}
let obj={name:'obj',hello
}
obj.hello()     //window

定时器普通函数内指向window。
解决办法在setTimeout里面bind(this),这样就指向obj了。

5、定时器this指向(箭头函数)

var name='window'
function hello(){setTimeout(()=>{console.log(this.name)}, 100);
}
let obj={name:'obj',hello
}
obj.hello()     //obj

定时器箭头函数内this指向调用最外层非箭头函数this相同,即hello()由obj调用

在promise中

var p = new Promise(function(resolve, reject){console.log(this);  // window
}).then(function(){console.log(this);  // undefined
})

参考:https://juejin.cn/post/6844903806510039047

面试题之this的指向相关推荐

  1. 语言的顺序表的合拼_2020语文中考专题五:语言运用和综合性学习。掌握基础题五种题型...

    提炼概括题 概括类型题,作为中考试卷中的重点题型,实际上着重考查考生的思维能力和语言表达能力.从试卷分析情况来看,在语言运用题和现代文阅读的相关考点中,考生的提炼概括能力是相对薄弱的,这会造成较多失分 ...

  2. 【金三银四】 一文弄懂 js 数据类型、堆栈内存、作用域(链)、闭包知识拓展 (一)

    引言 对答如流系列篇,关于基本数据类型.堆栈内存.作用域作用域链.闭包 大家好,这里是lionLoveVue,基础知识决定了编程思维,学如逆水行舟,不进则退.金三银四,为了面试也还在慢慢积累知识,Gi ...

  3. 高级JavaScript第(五)篇

    文章目录 ES6语法 ES6相关概念 什么是ES6 为什么使用ES6? ES6新增语法 let 关键字 let 声明的变量只在所处于的块级有限 不存在变量提升 暂时性死区 面试题 小结 const 具 ...

  4. C语言试题六十二之请编写函数fun除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串第一个字母,形参p已指向字符串中最后一个字母。在编写程序时,不得使用c语言提供的字符串函数。

    1. 题目 请编写函数fun除了字符串前导和尾部的*号之外,将串中其他*号全部删除.形参h已指向字符串第一个字母,形参p已指向字符串中最后一个字母.在编写程序时,不得使用c语言提供的字符串函数. 比如 ...

  5. C语言试题二十三之编写一个函数void function(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中

    1. 题目 请编写一个函数void function(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中.二 ...

  6. C语言试题十六之写删除字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。

    1. 题目 请编写一个函数void function(char a[],char b[], int n),其功能是:删除字符串中指定下标的字符.其中,a指向原字符串,删除后的字符串存放在b所指的数组中 ...

  7. 经典面试题(3):关于this指向的常见面试题

    大年初三凌晨1点,继续我们的经典面试题系列,今天我们了解一下关于函数内部this指向的问题,用一个简单的例子来讲解一下: 看下面的代码,你觉得输出的结果是什么? var myObject = {foo ...

  8. JavaScript中this的指向问题及面试题你掌握了吗?

    this 作为JavaScript中的一个关键字,它的复杂度很高,主要原因是它所处不同场景的代表的指向是不一样的.这里先做一个结论,重要事情说三遍: this的指向是由上下文环境动态决定的 this的 ...

  9. 【2011年全国试题3】已知循环队列存储在一维数组A[0…n-1],且队列非空时,front和rear分别指向队头元素和队尾元素。若初始时队列为空,且

    [2011年全国试题3]已知循环队列存储在一维数组A[0-n-1],且队列非空时,front和rear分别指向队头元素和队尾元素.若初始时队列为空,且要求第一个进入队列的元素存储在A[0]处,则初始时 ...

最新文章

  1. (How to)WordPress与Windows Live Writer整合
  2. ssm框架restful风格实现增删改查
  3. PHP下载功能的实现和获得当前目录
  4. Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
  5. 【NLP】保姆级教程:手把手带你CNN文本分类(附代码)
  6. sublime的TAB和空格统一
  7. LVDS收发传输实例
  8. 解决pycharm运行Flask指定ip、端口更改无效
  9. 利用反射动态实例化类执行方法并传值
  10. vue 左右循环滑动_vue实现无缝滚动循环
  11. 25款有用的桌面版博客编辑器
  12. JavaScript高级程序设计(第三版)阅读笔记
  13. MFC动态加载OCX控件
  14. 51单片机LCD1602电子时钟
  15. web前端开发教学视频,web前端开发职业
  16. 什么是亚马逊强关联,亚马逊账号关联详解
  17. CCF CSP 201609-2 火车购票(C++语言100分)[简单模拟题]
  18. SSL/TLS一键配置工具-IISCrypto
  19. VUE中created被重复调用(每次进入页面之后都会调用created)
  20. 2020腾讯数分笔试

热门文章

  1. 虚拟化硬件加速-vdpa
  2. 车联网 - 手机连接汽车 mirrorlink,carplay,android auto,carlife
  3. Linux的hwclock命令笔记221109
  4. UG NX12 同步建模:替换面
  5. 搞不懂多维分析!如何制作多角度、灵活动态的多维分析报表?
  6. 联想收购IBM个人电脑业务
  7. 话题编程与服务编程结合_编程的第四个十年:更大的盒子,更少的话题
  8. linux技能包【6】:内核升级
  9. 大华出入口管理系统H710服务器配置,【操作指南】H710 PRO厂区配置
  10. STC89C52+DHT20设计的环境温湿度检测仪