发表于: 2017-03-31 23:09:21
4 1557
web小课堂----有限状态机是什么?
1.背景介绍
什么是有限状态机?
定义:描述有限个状态 以及在这些状态之间的 转移和动作等行为 的数学模型(1)
2.知识剖析
在js中,新建一个对象,
用这个对象的属性来模拟元素的状态,
用这个对象的方法模拟元素在不同状态的转变,
那么这个对象就是一个有限状态机
是否可用有限状态机来描述,却决于:
当前状态确定,有限个状态,响应事件,在不同状态间有规律的转变。
常见问题
有限状态机有哪些应用场景?
解决方案
满足3点即可用:所需状态确定,有事件触发转变状态,总状态有限且转变有规律。
页面可用有限状态机的元素较多且有规律时可用:例如:开关按钮,下拉菜单,
举例:《杀人游戏的玩家死活状态、白天黑夜状态、》
扩展思考
- 有限状态机有哪些优点,解决了工程中的什么问题?
- 有限状态机里的this是如何指向的。
- 有限状态机的其他写法
参考文献
- 1.百度百科
http://baike.baidu.com/link?url=JCWzau_ENjIdQjYvgejhF-Q5kGz3LS2b42ZbCGmR_pdDEy1A_8ILrgnGmvynx7YARL7Ep1f_lpu06gne41OQEyTt63930zZfhhUrkjKEEQ4G2D-y5AE7HV35TY7v_Xd-vPGFX24oJHOET1ljS7Uj3_ - 2.博客
http://www.ruanyifeng.com/blog/2013/09/finite-state_machine_for_javascript.html - 3.《javascript高级程序设计》
6章2节:创建对象
ppt链接:https://ptteng.github.io/PPT/PPT/js-03-finiteStateMachine.html#/
demo链接:https://ptteng.github.io/PPT/demo/js-03-finiteStateMachine/js-03-finiteStateMachine.html#/
视频链接:https://v.qq.com/x/page/l0389copf7a.html
文本链接:http://jnshu.com/daily/19278?uid=6039
今日完成:
1 日常任务:回复日报,小课堂-有限状态机,wiki视频链接。
2 杀人游戏的核心逻辑,试着用有限状态机来描述,
》一个玩家的有限状态机的工厂函数。没有经过实验。描述了玩家的所欲状态和转换逻辑,可以用来作为游戏的核心逻辑,没有经过实验。
function createGamer(name){//玩家的状态机 的工厂函数
var o={
state:{
name:name,
identity:"平民",//"杀手"
aliveState:"alive",///null
deadState:null,//"killDead"."voteDead"
deadTime:null,
},
trans_identity:function(){
if(this.identity=="平民"){this.identity="杀手"}
else(this.identity="平民")
},
trans_aliveState:function(){
if(this.aliveState=="alive"){this.aliveState=null}
else{this.aliveState="alive"}
},
trans_deadState:function () {
switch (localStorage.pageType) {
case "killerPage":
this.deadState = "killDead";
break;
case "votePage":
this.deadState = "voteDead";
break;
default:
break;
}
},
trans_deadTime:function () {this.deadTime=localStorage.day},
event_Kill:function () {
this.trans_aliveState();
this.trans_deadState();
this.trans_deadTime();
},
event_assignIdentity:function () {this.trans_identity()}
};
return o;
}
明日计划“:
1 日常任务:回复日报,小课堂上传,官网视频。
2 任务9,图片上传,应该能完成原生方法的上传,然后换用angular插件上传。
问题:收获:
对有限状态机了解的更深入了。
小课堂要从3方面由浅入深,由抽象到具体:
》定义 == 》代码实例 ==》在任务中的应用。
这样才能让别人理解和运用。是要教会别人,而非向别人做汇报。
评论