如何自制 json 解析器

这个文章缘起自同事兼朋友的一个技术分享,他介绍了 json 的 parse 和 stringify 的实现等等具体知识,我主要是学习他的代码和编程思路。同时,我也对比了 douglas crockford 的实现,他是 json 格式的发明者和布道者,他的实现代码也非常的酷,非常值得学习。

作为 web 开发者,我们把 json 当成了水和空气,没认认真真的研究她,今天我们就来拨开她的面纱看看她的实现原理吧。

继续阅读“如何自制 json 解析器”

衡山一日一夜游计划

前言

又到一年过年时,这次选择出游衡山,之前去过衡山一次,这次带上家人一起。我做了一个简单的规划,大家帮忙看看有什么问题,帮我改进一下。

2020-01-20(农历 12 月 26)

中餐

我们在山下吃中饭,吃饭地址在丽君饭店,已经加了老板的微信,预定了包厢。

饭店离衡山入口比较近,方便。吃完饭,我们可以直接开始爬山之旅。

丽君饭店的饭菜还是不错的,在美团上的当地排名第一,老板热情,服务周到(此处应该给我一笔广告费)。吃了饭,民宿的老板就开车接我们上山了。

上面是规划,实际情况是这样的
继续阅读“衡山一日一夜游计划”

forin 和 Object.entries 运行效率对比

我们从一个很简单的问题出发,怎么遍历一个 js 对象?第一种使用 forin,但是会遍历到原型链上的属性,这个不是我们想要的。

forin 存在的问题

var s = {a:1}
s.__proto__ = {b:2}
for(var i in s) {console.log(i)}

所以我们要这样判断一下。

var s = {a:1}
s.__proto__ = {b:2}
for(var i in s) { if(s.hasOwnProperty(i)) console.log(i)}
继续阅读“forin 和 Object.entries 运行效率对比”

父子页面的 iframe 如何通信?

写这篇文章的原因是跟同事讨论了这个问题,我们持有不同的看法,他坚持在一个 iframe 里调用另一个 iframe 的方法,也可能触及 dom 操作;我认为简单传数据过去就好,隔离一下运行环境。跨 iframe 执行代码会有一些坑,比如使用 instanceof 操作符的时候,数组不是一个数组的实例,用 Array.isArray 不会有这个问题。

demo

See the Pen frame-out by zeng (@zengxiaoluan) on CodePen.

继续阅读“父子页面的 iframe 如何通信?”

我经历过的传染病及其中的事

1 月 30 日来深圳的时候,我在看《猎凶风河谷》,大雪皑皑,阒静无声,旷野中的人们显得孤独渺小,苍凉悲壮。一如现车上的人都戴着口罩,车厢里有人,但是这种距离感,跟独自站在旷野中没有什么分别。

我经历的一些传染病其实是这个社会传染病流行的缩影,说明大家都经历过,比如非典、疥疮、h1n1 和现在的新冠肺炎。并不是说我都得过这些,而是这些恰恰发生在我的记忆里。这不算什么私事,我也没什么不能启齿的羞涩。

继续阅读“我经历过的传染病及其中的事”

养猫

养猫哲学、橘猫、人猫如何相处

之所以要养猫是家里来了老鼠,那些讨厌的老鼠从南面北面的窗户不时涌入,咬我的网线、大米、苹果、蔬菜,翻我的垃圾桶,在长达两年的斗争中,有多次的凌晨惊醒,打坏了一把伞,坏了无数美梦,向房东抱怨无法解决又不能立马搬家的情况下,一个偶然的想法出现在脑里:不如养一条猫。

说养就养,很快,就从网上免费领养了一只橘猫。前主人给他治猫癣就花了一万多,从她手里接过一件又一件的药品和猫用品,我的心里也终于做好了准备:养猫可不是仅仅多一份开支的问题,更是一份时间和精力,也是肩上的重担。

一只招财进宝喵送给大家
继续阅读“养猫”

借钱

借过钱给别人的都知道,钱不好借,除了可能收不回本,还有其它诸多麻烦。我的借钱经验不算丰富,还是要硬来谈一谈这种麻烦事。

话说钱这种东西,人见人爱,但是很少人能意识到本质其实是信用。老板相信你的工作能力,给你支付工资;你相信高铁可以送你回家,你支付车票;你相信这篇文章所言不假,才会造成你的赞赏行为。回到借钱上来,我自是相信对方的为人和履约能力才借钱给对方。

我们知道,钱的本质是信用,很多问题就会迎刃而解,没信用就会没钱。

继续阅读“借钱”