技术文章

共有 5 篇文章


从 QuickJS 源码理解 JavaScript 的闭包

摘要

本文从 QuickJS 源码的角度分析 JavaScript 语言中的闭包的实现原理,首先介绍闭包的概念,然后从相关 C 语言代码,一步步解析闭包以及相关的垃圾回收机制的底层实现,最后总结闭包的定义和相关原理。

QuickJS 是一个用 C 语言编写的小型 JavaScript 引擎,支持 ES2019 规范,之所以选择 QuickJS 作为本文的解析对象,是因为它的源代码源码是由 C 语言编写的,仅由几个 C 文件组成,没有那么多复杂难懂的语法,也没有任何外部依赖,阅读难度较低。

注意,这不是一篇详细解析 QuickJS 源码的文章,作者仅对闭包相关的源码做了简单的解析,部分内容是在未完全理解 QuickJS 全部功能和工作原理的情况下而撰写的,某些概念和工作原理只适用于 QuickJS,可能具有误导性,请谨慎理解。

造一个简单的浏览器

前言

本教程将通过一个简单的仿浏览器界面的程序,向你介绍关于构建图形界面程序的基础知识,掌握这些知识后,你将会对图形界面开发有更加深刻的理解。

盒阴影的绘制方法

需求

LCUI 现有的阴影绘制方法只适合直角边框,没有考虑到圆角的情况,在添加 LCUI 的圆角绘制功能后,阴影绘制功能也需要重写。

Spinner 动画的绘制方法

在 LCUI 中想在界面上表示“加载中”状态挺麻烦的,为此准备给 LC Design 组件库添加 Spinner 组件,效果和 Bootstrap 的同名组件一致。

圆角边框的绘制方法

需求

LCUI 的圆角边框渲染一直没有实现,因为在这之前觉得这个功能需要花费大量的连续时间来开发和调试,长时间集中精力搞一个功能有点困难,所以就搁置了,现在准备完善它,毕竟一个 GUI 开发库连圆角边框这种常见效果都不能实现那确实有点水。