说说 ES6 中的 new 操作

在上一篇类成员保护的最后有一个小小的疑问,假设 Fn 是一个类,那么 new Fn()Reflect.construct(Fn, []) 有什么区别吗?乍一看都一样,都是进行 new 操作、创建对象,而主要的区别就要从 Reflect.construct 的第三个参数 newTarget 说起了,涉及到存在继承关系时 new 操作的具体过程。

JavaScript 中类的私有与保护成员

JavaScript 是基于对象的语言,但是自始至终,它的类与对象的概念都与以 C++ 为代表的编程语言有较大的区别。class 虽然从最初开始就是关键词,但是也是在最近的 ES6 中才被具体定义的,而关于类成员的访问控制在语法层面则是完全缺失的。从 JavaScript 开始应用于构建复杂交互起,对于如何模拟实现类成员的访问控制就一直是个老生常谈的问题,本文就尝试总结下目前想到的所有可能的模拟方法。

需要特别说明的是,不具备成员访问控制实际不会对应用有多大的影响,大家早已习惯,所有的这些模拟方法都只是代码层面的奇技淫巧而已,并不具备多大的实际使用价值。而真正意义上的 private fields 目前已处于草案阶段(Stage 2),离语法层面支持成员访问控制的日子不远了。

启用 HTTPS

最近准备尝试下基于 HTTP/2 的前端构建方案,虽然 HTTP/2 协议并不严格要求必须基于 HTTPS,不过目前所有的浏览器都只支持基于 HTTPS 的 HTTP/2,所以在构建 HTTP/2 前先得将站点升级至 HTTPS。

实现 8086 模拟器 - 准备工作

之前在公司内部的 JavaScript Weekly 邮件上看到有用 JavaScript 实现的 8086 模拟器,Google 了一番看到了 StackExchage 上的原题,假设与目标都很明确,正好这部分也不熟,那就来试试吧,前后折腾了差不多一个星期,实现有些纠结,方案换了三次,还好是越来越好,最后一个方案也是相对而言代码量最小的一个,最终的实现看这里

这一系列的日志记录于代码完成的一个月后,主要聊聊开发思路,全当复习啦~

Mac 开发环境搭建

最近要开始新的一年计划了,这一两天正好有空把手边的一台 Mac 给还原后重新配置开发环境,之前也从零配置过一两次,每次都会遇到些相同的问题,这次索性记录下来,也方便日后的初始化(在可预见的半年后估计又得重新来一次…)

编译 V8

在了解 V8 的 JavaScript 编译优化的时候想瞅瞅运行时的内存布局情况,需要重新编译 V8 来提供一些调试功能,参考官方文档,具体的步骤如下(主要针对 OS X 10.10 系统,其它系统应该类似)~

开坑了 & 搭建实况

趁着2015年年经的狗血还未消散,终于捣腾了一件去年就下定决心要完成、前年已计划开始而前前年就规划好的事儿——个人站点。偶总是不赶热潮,在这个写Blog已成坚持的年代,只希望偶这个坑不要太坑爹就是了……

第一篇总是想写些有逼格的,来点激励的,不能荒废了这大好的2015开篇呀!不过看着从大前年顺利延续至今的新年计划…… 那啥,我们还是来聊些轻松的吧…(>_<)…来说说这个站点的搭建全过程吧~