js组合模式及更强大的宏命令

<h1>js组合模式及更强大的宏命令</h1>
    <p>案例:1.打开空调;2.打开电视和音响;3.关门、开电脑、登录QQ</p>
	<button id="button">按我</button>
	<script>
	   
	   var MacroCommand = function(){
	      return {
	         commandList: [],
	         add: function( command ){
	            this.commandList.push( command );
	         },
	         execute: function(){
	            for( var i = 0, command; command = this.commandList[ i++ ]; ){
	                command.execute();
	            }
	         }
	      }
	   };
	   
	   var openAcCommand = {
	      execute: function(){
	         console.log( "打开空调" );
	      }
	   };
	   /*电视和音响是同时打开的 */
	   var openTvCommand = {
	      execute: function(){
	         console.log( "打开电视")
	      }
	   };
	   var openSoundCommand = {
	      execute: function(){
	         console.log( "打开音响");
	      }
	   };
	   
	   var marcoCommand1 = MacroCommand();
	   marcoCommand1.add( openTvCommand );
	   marcoCommand1.add( openSoundCommand );
	   
	   /*关门、打开电脑和打开登录QQ的命令*/
	   var closeDoorCommand = {
	      execute: function(){
	         console.log( "关门" );
	      }
	   };
	   var openPcCommand = {
	      execute: function(){
	         console.log( "开电脑" );
	      }
	   };
	   var openQQCommand = {
	      execute: function(){
	         console.log( "登录QQ" );
	      }
	   };
	   var marcoCommand2 = MacroCommand();
	   marcoCommand2.add( closeDoorCommand );
	   marcoCommand2.add( openPcCommand );
	   marcoCommand2.add( openQQCommand );
	   
	   /*现在把所有的命令组合成一个“超级命令”*/
	   var marcoCommand = MacroCommand();
	   marcoCommand.add( openAcCommand );
	   marcoCommand.add( marcoCommand1 );
	   marcoCommand.add( marcoCommand2 );
	   /*最后给遥控器“绑定超级命令” */
	   var setCommand = ( function( command ){
	        document.getElementById( "button" ).onclick = function(){
	            command.execute();
	        }
	   }( marcoCommand ) )
	</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值