有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
状态总数(state)是有限的。
任一时刻,只会处于一种状态中。
在某种条件下,会从一种状态转变到另一种状态中。
在维基百科中称:有限状态机FSM是设计和实现事件驱动程序内复杂行为组织原则的有力工具。对于前端来说,尤其是Javascript编程时,这个模型的意义就在于可以将其套用在很多对象上。具体个例子,比如一个按钮平时就是正常的按钮,当你点击后变成一个input。当然你可能会说这么简单的功能,我直接用jQuery甚至不用都可以,操作DOM显示和隐藏就好了。如果你还抱有这种天真的想法,我只能说你没遇到过让你痛不欲生的页面。。。当页面复杂到一定程度,单纯操作DOM去处理前端只会加快你疯掉的进程。
01 | var btn = { |
02 | // 当前状态 |
03 | currentState: 'btn', |
04 |
05 | // 绑定事件 |
06 | initialize: function() { |
07 | var self = this; |
08 | self.on("click", self.transition); |
09 | }, |
10 |
11 | // 状态转换 |
12 | transition: function(event){ |
13 | switch(this.currentState) { |
14 | case "btn": |
15 | this.currentState = 'input'; |
16 | doSomething(); |
17 | break; |
18 | case "input": |
19 | this.currentState = 'btn'; |
20 | doSomething(); |
21 | break; |
22 | default: |
23 | console.log('Invalid State!'); |
24 | break; |
25 | } |
26 | } |
27 | }; |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |