本期内容:
- 杂七杂八的Chrome分享
- Mutation Observer API
- Vue原理
- 浏览器的回流与重绘 (Reflow & Repaint)
- 碰撞检测
- 如何编写低垃圾回收的实时JavaScript?
- vega
杂七杂八的Chrome分享
1 | 1. `$_`是对上次执行的结果的引用。 |
Mutation Observer API
Mutation Observer API 用来监视 DOM 变动。
https://wangdoc.com/javascript/dom/mutationobserver.html
Vue原理
浏览器的回流与重绘 (Reflow & Repaint)
浏览器渲染详细过程:重绘、重排和 composite 只是冰山一角
碰撞检测
《《HTML5 Canvas核心技术》 .图形、动画与游戏开发》 第八章。
https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169
http://www.mikechambers.com/blog/2011/03/21/javascript-quadtree-implementation/
如何编写低垃圾回收的实时JavaScript?
对于游戏开发比较重要。
低级篇:
- 用
{}、[]
代替new
运算符。 - 函数返回值不要返回对象,用外部变量代替。
通过
cr.wipe(obj)
清空和重用对象。1
2
3
4
5
6
7cr.wipe = function(obj){
for(var o in obj) {
if (obj.hasOwnProperty(o)){
delete obj[o];
}
}
}通过
arr.length=0
清空和重用数组。- 用变量引用回调函数,尽量少动态创建匿名函数。
高级篇:
- 少用数组的
slice
方法和字符串的substr
方法,他们都会创建新的临时对象。 - 在对象数组的递归中,用索引号
topIndex
来代替pop
和push
操作。 - 少用对象形式的矢量,如
getPosition()
改为getX()
和getY()
。
https://www.construct.net/en/blogs/construct-official-blog-1/write-low-garbage-real-time-761
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management
vega
可视化语法