代理模式的使用场景: 多个对象之间有相互依赖关系,为了解决错综复杂的关系,
需要创建个中介者对象来管理他们之间的依赖关系。
js 函数柯里化
前言
函数柯里化是一种编程技巧,表现特点是将多个函数,一层一层包裹,执行最外部函数,把参数传给与其相邻的内层函数,递归调用。来看代码:
代码
1 | var testCurried = function ( a ) { |
如果要锁定前三个参数,第四个参数灵活化,那就把前三个方法的调用赋值给一个方法:
1 | var test1 = testCurried( 1 )( 2 )( 3 ); // 返回的是个方法 |
对于最后一层调用函数来说,前三个函数形成了闭包,把参数这个变量传递给了最内层函数,test1
是testCurried( 1 )( 2 )( 3 )
的执行结果。
以上便是自己对函数柯里化的简单理解。
(完)
js深拷贝
前言
js数据类型分为基本数值类型(Undefined,Boolean,number, string)和引用类型(array,object,null),基本数值类型是在栈中的,引用类型是在堆中的,因此对象是在堆中占据内存的,因此对象的改变,其实是指针指向的对象的改变,因此引用这个对象的对象都会改变。
代码
1 | const obj1 = { |
以上是深拷贝方法,对象复制后,新对象的改变不会相互影响。
(完)
H5小游戏分享
项目背景
本文记录自己在公司内部前端组关于h5小游戏的分享。
特点
轻量,简单,基于js+canvas
1.页面适配布局
由于各个小游戏框架库都是基于canvas,当中的元素坐标基于px,所以rem方案不适用,而是按照640的屏幕去写页面,然后再等比缩放,这样其中的元素该位移多少还是位移多少,不同屏幕下,他的位移值是一样的, 只不过视觉上经过放大缩小后,就适配了布局。
a.
横屏或竖屏布局后,当监测到用户手机为非期望屏幕方向时,弹层提示。
b.
写2套css,分别为元素横屏和竖屏布局,然后屏幕旋转时,暂停游戏,切换布局,再把当前数据套进去。
2.js游戏引擎
a.
createjs,pixijs,phaser
2D,支持canvas,webGL
createjs,pixijs两个元素结构 stage-container-sprite
b.
egret,LayaAir,cocos2D-js,three.js
2D,3D等中大型游戏
3.工具
制作雪碧图-texturePckageGUI
生成雪碧图+json,json中包含各个图的位置信息
骨骼动画-dragonbonesPro
4.碰撞检测
https://aotu.io/notes/2017/02/16/2d-collision-detection/
5.源码网
http://www.codefans.net/jscss/sort/list_7_1.shtml
(完)
gulp 构建总结
项目背景
本文记录下自己使用gulp构建的配置。
代码配置
1 | var gulp = require( 'gulp' ); |
(完)