摘要:的定义执行上下文。这本书也是举了好几个例子来说明,这句话的含义。我个人也认为,不通过代码,非常难说明问题。所以,修改的是全局的,并不是自身的。
this
先说明一下,this是我JavaScript的盲区,写这篇文章,就是为了让自己能重新认识this,并且搞清楚,js里面的this,到底是什么。 这个系列主要是记录我自己看《你不知道的JavaScript》这本书的笔记。
this的定义:执行上下文。
这句话理解起来,很费劲。这本书也是举了好几个例子来说明,这句话的含义。我个人也认为,不通过代码,非常难说明问题。
exp1:
function fn() { console.log("fn", this) } fn() // log: // fn, // Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, parent: Window, …}
这个例子非常简单,一般也能看出输出的this是window,原因很简单,这个fn是全局函数,也是在全局作用域下运行的,所以执行上下文,可以理解为执行作用域,就是window。
exp2:
var count = 0; function fn(num) { console.log("你说几就几:"+num) this.count += 5 } fn.count=1 fn(2) // 你说几就几:2 console.log(fn.count) // 1 console.log(count) // 5
这个例子,执行 fn.count 和 fn内部的 this.count其实没什么关系。因为fn在执行的时候,执行上下文还是window。所以,this.count += 5修改的是全局的count,并不是fn自身的count。
exp3:
function fn() { this.count = 1; function myFoo() { this.count +=2; } myFoo() console.log(this.count) } fn() // 3
未完待续。。。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/102786.html
下一篇:《你不知道的javascript》笔记_对象&原型 写在前面 上一篇博客我们知道词法作用域是由变量书写的位置决定的,那this又是在哪里确定的呢?如何能够精准的判断this的指向?这篇博客会逐条阐述 书中有这样几句话: this是在运行时进行绑定的,并不是在编写时绑定,它的上下文取决于函数调用时的各种条件this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式当一个函数被调用时...
摘要:本书属于基础类书籍,会有比较多的基础知识,所以这里仅记录平常不怎么容易注意到的知识点,不会全记,供大家和自己翻阅不错,下册的知识点就这么少,非常不推介看下册上中下三本的读书笔记你不知道的上读书笔记你不知道的中读书笔记你不知道的下读书笔记第三 本书属于基础类书籍,会有比较多的基础知识,所以这里仅记录平常不怎么容易注意到的知识点,不会全记,供大家和自己翻阅; 不错,下册的知识点就这么少,非...
摘要:但是如果非全局的变量如果被遮蔽了,无论如何都无法被访问到。但是如果引擎在代码中找到,就会完全不做任何优化。结构的分句中具有块级作用域。第四章提升编译器函数声明会被提升,而函数表达式不会被提升。 本书属于基础类书籍,会有比较多的基础知识,所以这里仅记录平常不怎么容易注意到的知识点,不会全记,供大家和自己翻阅; 上中下三本的读书笔记: 《你不知道的JavaScript》 (上) 读书笔记...
摘要:最近刚刚看完了你不知道的上卷,对有了更进一步的了解。你不知道的上卷由两部分组成,第一部分是作用域和闭包,第二部分是和对象原型。附录词法这一章并没有说明机制,只是介绍了中的箭头函数引入的行为词法。第章混合对象类类理论类的机制类的继承混入。 最近刚刚看完了《你不知道的 JavaScript》上卷,对 JavaScript 有了更进一步的了解。 《你不知道的 JavaScript》上卷由两部...
阅读 2559·2023-04-25 18:13
阅读 767·2021-11-22 12:10
阅读 2967·2021-11-22 11:57
阅读 2136·2021-11-19 11:26
阅读 2162·2021-09-22 15:40
阅读 1458·2021-09-03 10:28
阅读 2701·2019-08-30 15:53
阅读 1947·2019-08-30 15:44