DaraW

Code is Poetry

《你不知道的JS上卷》阅读小记之setTimeout的this指向问题

这几天翻看了下被传的神乎其神的《你不知道的JS》这本书,其实以前就看过一次,不过当时的level并不高,而且感觉这本书讲的有点绕,所以看了一点就没坚持下去。
这次翻看感觉还是比较轻松的,有些地方写的很好,有的地方还是感觉讲的有点绕(可能是翻译的问题),但总的来说这本书还是很不错的,基本都是JS中有坑、新手难以理解的点,简直就是《JS:The Bad Parts》(哈,开个玩笑~)。
这个小记不是打算记录书中内容的笔记,而是想补充纠正书中的讲的不完善的地方。

ES6实现内部类的写法

最近在把 JIris 移植到JS平台 Iris.js 的过程中不断的在Java和JS两种语言之间切换,ES6的 Class 某种程度来说可以写出更加优雅的代码,而不用去管背后的原型实现。但是不得不说有一个遗憾就是 ES6 虽然支持了静态方法,但是还不支持静态属性和静态类,于是仔细观察了下发现了几种ES6实现静态类的相对优雅的写法。

node-thunkify源码阅读笔记

Node7发布后已经可以通过添加--harmony-async-await的参数调用来直接支持async/await语法了,据说Node8还会进一步推进其发展,于是研究了一下JS的异步流程控制和下一代Node Web框架Koa2

关于generator async/await的发展史已有一大堆文章讲过了,这里不再赘述。
tj的coKoa2上个大版本Koa1的核心,在没有async/await的时候一般会借助co来做自动流程控制。关于co的源码分析文章也有很多,代码不长值得一读,参考了一些分析文章也算是了解了其逻辑和思路。

co中出现了一个thunkToPromise的函数,一些文章都跳过了这个并表示thunk函数已经没什么意义了,但本着好奇心读了阮一峰的Thunk 函数的含义和用法,文中一个地方一时没有搞懂,故写此文记录一下。

如何监听JS变量的变化

如何监听 js 中变量的变化?
我现在有这样一个需求,需要监控js的某个变量的改变,如果该变量发生变化,则触发一些事件,不能使用timeinterval之类的定时去监控的方法,不知道有比较好的解决方案么?

这个问题问的很好。

流行的MVVM的JS库/框架都有共同的特点就是数据绑定,在数据变更后响应式的自动进行相关计算并变更DOM展现。所以这个问题也可以理解为如何实现MVVM库/框架的数据绑定

常见的数据绑定的实现有脏值检测,基于ES5的gettersetter,以及ES已被废弃的Object.observe,和ES6中添加的Proxy

记一次前端性能优化实战

前言

这学期开学时去找了信息化中心的老师,说明了自己想往Node和Python方向走的想法,退出了信息化中心的学生工作室。
然而上周六老师又找到了我,他们对一个电商网站项目的前端性能很不满意,希望我能给他们做一套性能优化方案。

将setTimeout函数队列

问题

先来看一段代码:

1
2
3
4
5
6
7
8
9
10
11
setTimeout(function() {
console.log('3000ms');
}, 3000);

console.log('first');

setTimeout(function() {
console.log('1000ms');
}, 1000);

console.log('second');

控制台输出为:

1
2
3
4
first
second
1000ms
3000ms

如果我们想让第一个定时器的回调函数执行完再执行第二个定时器的回调函数该怎么做呢?

Proudly powered by Hexo and Theme by Hacker
© 2022 DaraW