1.当一个对象内部的状态发生改变的时候会导致其行为发生改变
//状态对象的实现
var ResutlState=function(){
var States={
state0:function(){
console.log("第0种状态");
},
state1:function(){
console.log("第2种状态");
},
state2:function(){
console.log("第3种状态");
},
state3:function(){
console.log("第4种状态");
}
}
function show(result){
States[‘state‘+result] && States[‘state‘+result]();
}
return{
show:show
}
}();
//调用
ResutlState.show(2);
//状态的优化
var MarryState=function(){
var _currentSate={};
var States={
jump:function(){
console.log("跳跃");
},
move:function(){
console.log("移动");
},
shoot:function(){
console.log("射击");
},
squat:function(){
console.log("蹲下");
}
}
//动作控制类
var Action={
changeState:function(){
var arg=arguments;
_currentSate={};
if(arg.length){
for(var i=0;i<arg.length;i++){
_currentSate[arg[i]]=true
}
}
return this;
}
,
goes:function(){
for(var i in _currentSate){
States[i]();
}
return this;
}
}
return{
change:Action.changeState,
goes:Action.goes
}
}
//调用函数
// MarryState().change(‘jump‘,‘shoot‘).goes().goes().change(‘shoot‘).goes();
//或者
var marr =new MarryState();
marr.change(‘jump‘,‘shoot‘).goes().change(‘jump‘).goes();
原文:http://www.cnblogs.com/dangou/p/7371356.html