自编自用笔试题:给JSON.stringify的简化实现添加“环”检查算法

2017-08-02
阅读 2 分钟
3.1k
假设入参是字面量对象,属性名是字符串,属性值要么是数字字面量,要么是字面量对象,不考虑json排版,JSON.stringify的简化版实现如下:

调试手记: 获取 offsetHeight 导致页面卡顿

2017-07-31
阅读 1 分钟
2k
首先,页面中有多个 tab 页,每个 tab 上都有一个巨大的树形列表,然而项目中的 tab 页实现方式是先全渲染出来,然后隐藏 inactive 的tab。

调试手记:iOS Safari 浏览器触摸事件 targetTouches 属性被浏览器重用

2016-10-09
阅读 1 分钟
3.9k
使用 Chrome 验证功能正常,打 log 发现业务代码中缓存了 targetTouches 属性,但是下一次 touchmove 事件到来时缓存的 targetTouches 被改变了,clientX 和 clientY 变为新值,导致无法正确计算手指滑动距离。经研究发现,Safari 在多次发出 touch 事件期间,重用了 event.targetTouches 这个 touchList 对象和里面 Tou...

调试手记:zepto touch 模块与移动浏览器 media 标签的不兼容,以及解决方法

2016-09-28
阅读 2 分钟
2.9k
最近在开发一个视频播放器项目,需要隐藏 video 标签,使用 canvas 自己做渲染。结果在点按钮播放视频的时候发现 zepto touch 模块不能用了。

小技巧:如何在 js 中使用 apply 语法执行 new?

2016-09-01
阅读 1 分钟
3k
本文没什么营养,只是临时用到记录一下,学习的请绕道。 问题 简而言之,我有一个类函数: {代码...} 但是我想使用数组作为参数表创建实例,比如: {代码...} 请问,applyNew应如何实现? 解答1 最直接的方法是使用 Function.prototype.bind。实现代码如下: {代码...} 注意,([{}]).concat(args || [])这行代码是因为 b...

开个脑洞,如何使用 javascript 实现“仿函数”(Functor)?

2016-07-23
阅读 2 分钟
3.3k
仿函数(Functor)是 C++ 里面一个重要的概念,简而言之就是使用重载了 operator() 运算符的对象模仿函数的行为,带来的收益是仿函数可以携带自身状态,普通的 C++ 函数不是对象,做不到这一点。

javascript 参数检验(二):参数检查工具的完善

2016-07-22
阅读 2 分钟
2.5k
按照之前的接口设计,链式调用表示“与”,参数表表示“或”,自然产生了一个问题——如果我要表达“(A与B)或(C与D)”这样的逻辑组合应该怎么办?

实现一个奇怪的需求:如何将一串 js 链式调用存储在一个函数或对象中,以备未来调用?

2016-07-21
阅读 3 分钟
3.4k
注意 segment 和 fault 并不一定返回 this,但是要返回一个同类型对象,否则 foobar.segment(1).fault(2).segment(3).fault(4) 这样的代码就可能不合法。这是我特别添加的约束,满足这一条下面的文章和才有意义。

javascript 参数检验(一):实现一个方便的参数检验工具

2016-07-20
阅读 2 分钟
4.9k
javascript 属于弱类型语言,参数的类型错误只能在运行期发现。当你需要 expose “非常健壮”的接口给外部,或者在调试较大项目的时候,你可能会怀念强类型语言的类型约束,或者 assert 一类东西。

谈谈 javascript 面向对象的一些细节问题

2016-06-29
阅读 3 分钟
2.2k
在 ES6 之前,ES5 实现面向对象是大家经常讨论的问题,趁着 ES6 还没进入浏览器,借我自己的一段脚本,跟大家讨论一下 js 面向对象的一些细节问题,欢迎留言指教。

函数式 js 接口实现原理,以及 lodash/fp 模块

2016-06-20
阅读 3 分钟
9.6k
之前在 youtube 上看到一个技术视频,讲“underscore.js的接口为什么不好用”,以及什么样的接口更好用。演讲者是 lodash.js 的作者,他提出了一种“全面函数式”的 js 接口设计模式。大概类似这样:

如何实现混合 App Web 资源的打包与增量更新

2016-06-19
阅读 3 分钟
8.3k
移动 App 的运行环境具有带宽不稳定,流量收费,启动速度比较重要等特点,所以混合 App 如何加载 Web 资源并不是一个新问题。本文目的是总结出一种资源打包下载的思路和方案,并且提供一种打包工具。本文提到的思路只是一家之言,基本没有参考现有方案,各位方家有不同意见欢迎留言。另外本文没有涉及到 App 内部如何加...

如何实现 javascript “同步”调用 app 代码

2016-06-17
阅读 5 分钟
7.2k
在 App 混合开发中,app 层向 js 层提供接口有两种方式,一种是同步接口,一种是异步接口(不清楚什么是同步的请看这里的讨论)。为了保证 web 流畅,大部分时候,我们应该使用异步接口,但是某些情况下,我们可能更需要同步接口。同步接口的好处在于,首先 js 可以通过返回值得到执行结果;其次,在混合式开发中,app ...

如何发布带静态资源的库(jar 包)——android 篇

2016-06-16
阅读 2 分钟
5.1k
一个混合开发框架不止包含代码,还可能包含静态资源,比如数据库,默认 js 脚本等。本文介绍了如何在 Android 系统中打包包含静态资源的 jar 包,以及设置 eclipse 自动编译。