JS命令模式个人理解

//BODY部分
<body>
<button id="execute">打开电视</button>
<button id="undo">关闭电视</button>
</body>
//JavaScript部分
<script>
var Tv={//面向字面量
open:function(){
console.log('打开电视机');
},
close:function(){
console.log('关闭电视');
}
} var OpenTvCommand=function(receiver){//一个函数,new之后才可以访问receiver
this.receiver=receiver;
} OpenTvCommand.prototype.execute=function(){//OpenTvCommand中添加一个execute方法
this.receiver.open();
//this.receiver.close();
} OpenTvCommand.prototype.undo=function(){//OpenTvCommand中添加一个undo方法
this.receiver.close();
} var setCommand=function(command){//执行命令函数
document.getElementById('execute').onclick=function(){
command.execute();
//console.log(command);
//console.log(OpenTvCommand.execute());
}
document.getElementById('undo').onclick=function(){
command.undo();
}
} setCommand(new OpenTvCommand(Tv));
//console.log(new OpenTvCommand(Tv));
</script>

分析:

第一步:new OpenTvCommand(Tv) 实例化一个OpenTvCommand(Tv)函数,
        得到一个OpenTvCommand(receiver:Object)对象,
           Object中包含两个对象open()和close()方法

第二步:setCommand(new OpenTvCommand(Tv)) 中的new OpenTvCommand(Tv)可以把它看做open()和close()两个方法传过去,
           传递给setCommand()对象,command.execute()再回到 OpenTvCommand.prototype(execute,undo包含这两个方法)的方法中自由匹配自身函数与TV对象中的方法,
           然后再执行OpenTvCommand.prototype自身有的方法

PS:如何要想在execute或者undo中添加方法,只需添加一个Tv中的方法即可,这就是我理解的命令模式

最新文章

  1. 第一届山东省ACM——Phone Number(java)
  2. 嵌入式Linux驱动学习之路(十四)按键驱动-同步、互斥、阻塞
  3. 白话讲MyIsam和InnoDB的区别
  4. EA中的模板管理
  5. 基于Token的WEB后台认证机制
  6. Backbone.js Wine Cellar 教程
  7. 解决虚拟机linux端mysql数据库无法远程访问
  8. bugzilla_firefox
  9. popular net
  10. 数组作为hash元素的时候如何push
  11. sql server 2016 management studio没有的解决方式
  12. jquery介绍
  13. Java泛型的好处
  14. cf B. Resort
  15. 用Java写个ftp传输类实现文件的上传和下载,用ikvmc转成dll
  16. Java 异常归纳总结
  17. EXP AND IMP
  18. 【转载】doxygen+graphviz生成代码文档
  19. 阿里云CentOS7.2服务器的安装
  20. 关于C的全局变量

热门文章

  1. Unity3d 实现鼠标左键点击地形使角色移动到指定地点[脚本]
  2. 【数据挖掘】分类之kNN(转载)
  3. 篇一、安装配置Android Studio
  4. MapReduce源码分析之InputFormat
  5. Mysql主从配置笔记
  6. Mysql----MySQL的mysql_insert_id和LAST_INSERT_ID(转)
  7. android greendao3.0 多表关联关系讲解(转)
  8. web 开发之js---HTML5之广播聊天室
  9. iOS_3_图片浏览
  10. redis 集群 搭建