javascript中的this使用场景以及箭头函数中的this

简介: this总是指向一个对象,有时指向全局对象,有时指向构造对象,有时指向DOM对象1. 作为对象的方法调用做为对象的方法调用时 this 指向对象本生2.

this总是指向一个对象,有时指向全局对象,有时指向构造对象,有时指向DOM对象

1. 作为对象的方法调用

做为对象的方法调用时 this 指向对象本生

img_095f7d70e33c17d77618109aae91f0b3.png

2. 作为普通函数被调用

普通函数里的this总是指向全局变量

img_c9fd0cf854d2df08dc7f21e27dbbe2bb.png

对象的方法复制给变量,在通过变量来调用后对象的方法变成了普通函数

img_afaad9999c297a7d985f4dac13d4ddca.png

观看这个例子发现:

getName1 = Person.getName  是把getName1指向Person.getName方法的内存地址(方法本身没有被执行),其本质是个函数,所以在使用getName1() 时就是调用普通函数

getName2 = Person.getName() 是把Person.getName的返回值(已经执行了)bingxl赋值给getName2

对两个变量经行typeof操作

img_404e7a75088cab84583b03923e4cebf0.png

3. DOM事件触发函数里的this

DOM事件触发函数里的this指向DOM节点本身

img_98c74bacaff7d51de5fc5a10d3999cb8.png

test() 是一个普通函数,所以test里的this指向了全局对象window

4. 构造器调用

使用new运算符调用构造函数时会返回一个对象,构造函数里的this一般就指向返回的对象

当构造函数使用return显式的返回一个对象时new操作符返回的就是显式返回的对象

img_99e6e854750048904a5726b0a92bc1ce.png

5. call , apply 和 bind

通过call 或apply调用会改变this的指向传入的对象

img_a4d2d0284b12ab0e5916ece24b29adb1.png

6. 箭头函数中的this

箭头函数中的this就是定义时所在的this, 也就是说 箭头函数本身没有this。

箭头函数也可以使用bind, call , applay来改变this指向

img_c03f03c6c827770492df78b6f1cf0cbc.png

对比 arrow 和 sub 函数可以看出

相关文章
|
17天前
|
JavaScript 前端开发 Java
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
本文介绍了JavaScript中常用的函数和方法,包括通用函数、Global对象函数以及数组相关函数。详细列出了每个函数的参数、返回值及使用说明,并提供了示例代码。文章强调了函数的学习应结合源码和实践,适合JavaScript初学者和进阶开发者参考。
31 2
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
|
16天前
|
前端开发 JavaScript 开发者
除了 Generator 函数,还有哪些 JavaScript 异步编程解决方案?
【10月更文挑战第30天】开发者可以根据具体的项目情况选择合适的方式来处理异步操作,以实现高效、可读和易于维护的代码。
|
30天前
|
JavaScript 前端开发
JavaScript 函数语法
JavaScript 函数是使用 `function` 关键词定义的代码块,可在调用时执行特定任务。函数可以无参或带参,参数用于传递值并在函数内部使用。函数调用可在事件触发时进行,如用户点击按钮。JavaScript 对大小写敏感,函数名和关键词必须严格匹配。示例中展示了如何通过不同参数调用函数以生成不同的输出。
|
1月前
|
存储 JavaScript 前端开发
JS函数提升 变量提升
【10月更文挑战第6天】函数提升和变量提升是 JavaScript 语言的重要特性,但它们也可能带来一些困惑和潜在的问题。通过深入理解和掌握它们的原理和表现,开发者可以更好地编写和维护 JavaScript 代码,避免因不了解这些机制而导致的错误和不一致。同时,不断提高对执行上下文等相关概念的认识,将有助于提升对 JavaScript 语言的整体理解和运用能力。
|
1月前
|
JavaScript 前端开发
js教程——函数
js教程——函数
36 4
|
1月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
16 2
|
1月前
|
JavaScript 前端开发 Java
【javaScript数组,函数】的基础知识点
【javaScript数组,函数】的基础知识点
24 5
|
1月前
|
JavaScript 前端开发
Node.js 函数
10月更文挑战第5天
23 3
|
1月前
|
前端开发 JavaScript
探索JavaScript函数基础
探索JavaScript函数基础
19 3
|
1月前
|
JavaScript 前端开发
js轮播图有左右箭头和小点
js轮播图有左右箭头和小点
31 1