Tuesday, September 03, 2013

[repost ]JavaScript与有限状态机

original:http://www.ruanyifeng.com/blog/2013/09/finite-state_machine_for_javascript.html 有限状态机(Finite-state machine)是一个非常有用的模型,可以模拟世界上大部分事物。 简单说,它有三个特征:   * 状态总数(state)是有限的。 * 任一时刻,只处在一种状态之中。 * 某种条件下,会从一种状态转变(transition)到另一种状态。 它对JavaScript的意义在于,很多对象可以写成有限状态机。 举例来说,网页上有一个菜单元素。鼠标悬停的时候,菜单显示;鼠标移开的时候,菜单隐藏。如果使用有限状态机描述,就是这个菜单只有两种状态(显示和隐藏),鼠标会引发状态转变。 代码可以写成下面这样:   var menu = {     // 当前状态     currentState: 'hide',     // 绑定事件     initialize: function() {       var self = this;       self.on("hover", self.transition);     },     // 状态转换     transition: function(event){       switch(this.currentState) {         case "hide":           this.currentState = 'show';           doSomething();           break;         case "show":           this.currentState = 'hide';           doSomething();           break;         default:           console.log('Invalid [...]



via WordPress http://blog.newitfarmer.com/programming/javascript/12699/repost-javascript%e4%b8%8e%e6%9c%89%e9%99%90%e7%8a%b6%e6%80%81%e6%9c%ba#utm_source=rss&utm_medium=rss&utm_campaign=repost-javascript%25e4%25b8%258e%25e6%259c%2589%25e9%2599%2590%25e7%258a%25b6%25e6%2580%2581%25e6%259c%25ba

Labels:

0 Comments:

Post a Comment

<< Home