Origin of Ray

一起探索互联网的秘密

最近在重新看cookie的配置的时候,发现了它的一个新的配置,叫做sameSite。

这个sameSite的中文翻译就是同站。

我们今天就来看一下这个同站是什么,它和同源有什么区别,为什么cookie明明都有domain和path来规定作用域了还需要sameSite这个属性。

阅读全文 »

前面几篇文章我们从调用栈和执行上下文角度讲清楚了作用域和闭包,同时讲了作用域和this的区别,现在JavaScript中最难理解的几个概念就只剩下一个原型链了。

如果我们看过《JavaScript高级程序设计》的话应该就对其中那个原型的章节有印象,它有一个非常复杂的图,通过这图来讲了JavaScript的_proto_prototypeconstructor之间的指向关系。

一开始读那本书对这一块我是似懂非懂的,终于借这次重新梳理的机会搞清楚了。

这篇博客的内容还是分为两部分:

  • 通过几个公式来理清楚_proto_prototypeconstructor的指向关系。
  • 原型链的使用
阅读全文 »

在以前的文章中,我们通过调用栈执行上下文讲清楚了JavaScript的作用域链和闭包的原理。

这次我们来讲一下JavaScript中另外一个非常重要的概念this。

这篇文章有两个要点,第一,this是个什么东西,第二,this指向如何判断。

阅读全文 »

上一篇关于作用域的文章中我们通过调用栈讲什么是作用域。

每当我们调用一个函数时就会在调用栈中为该函数创建执行上下文,到目前为止我们知道了该执行上下文中有变量环境,用于存储通过var声明的变量,也有一个词法环境,词法环境又是一个栈,依次放置了函数中通过let和const声明的在不同层级的块级作用域中的变量

基于上面的变量环境和词法环境,我们可以明白如何在一个函数的执行上下文中找到正确的变量。

那如果我们所需要的变量其实不在当前执行上下文,而是在上一级的执行上下文中呢?我们怎么确定上一级的执行上下文是哪个?

这个问题就涉及了我们今天的主题:作用域链。

理解作用域链是理解闭包的基础,而闭包在 JavaScript 中几乎无处不在,同时作用域和作用域链还是所有编程语言的基础。所以,如果你想学透一门语言,作用域和作用域链一定是绕不开的。

阅读全文 »

无论你是想要设计高性能 Web 应用,还是要优化现有的 Web 应用,你都需要了解浏览器中的网络流程、页面渲染过程,JavaScript 执行流程,以及 Web 安全理论。

这篇文章简单介绍下浏览器的架构演进。

阅读全文 »

最近看了几篇关于浏览器原理的文章,对浏览器的渲染流程有了个比较系统的了解,在这里简单总结下并顺便讲下老生常谈的重排和重绘是怎么回事。

阅读全文 »

上一篇博客中,我们从执行机制和上下文的角度讲了javascript中的变量提升。

正是由于 JavaScript 存在变量提升这种特性,从而导致了很多与直觉不符的代码,这也是 JavaScript 的一个重要设计缺陷。

虽然 ECMAScript6(以下简称 ES6)已经通过引入块级作用域并配合 let、const 关键字,来避开了这种设计缺陷,但是由于 JavaScript 需要保持向下兼容,所以变量提升在相当长一段时间内还会继续存在。这也加大了你理解概念的难度,因为既要理解新的机制,又要理解变量提升这套机制,关键这两套机制还是同时运行在“一套”系统中的。

阅读全文 »

只有理解了 JavaScrip 的执行上下文,你才能更好地理解 JavaScript 语言本身,比如变量提升、作用域和闭包等。不仅如此,理解执行上下文和调用栈的概念还能助你成为一名更合格的前端开发者。这次我们就从上下文的角度讲一下js的变量提升。

阅读全文 »

上周的博客中我们讨论并实现了图的拓扑排序,这周我们继续学习图的另外一种基础的算法,最短路径算法Dijkstra算法,以及如何将其改造成我们平时导航或者游戏中经常使用中用到的寻路算法。

阅读全文 »

今天看了一篇关于拓扑排序的思路和应用的文章,自己手动实现记录一下。

数据结构

算法是构建在具体的数据结构之上的。针对这个问题,我们先来看下,如何将问题背景抽象成具体的数据结构?

我们可以把源文件与源文件之间的依赖关系,抽象成一个有向图。每个源文件对应图中的一个顶点,源文件之间的依赖关系就是顶点之间的边。

如果 a 先于 b 执行,也就是说 b 依赖于 a,那么就在顶点 a 和顶点 b 之间,构建一条从 a 指向 b 的边。而且,这个图不仅要是有向图,还要是一个有向无环图,也就是不能存在像 a->b->c->a 这样的循环依赖关系。因为图中一旦出现环,拓扑排序就无法工作了。实际上,拓扑排序本身就是基于有向无环图的一个算法。

阅读全文 »
0%