JS命令模式个人理解
2024-08-31 10:13:19
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中的方法即可,这就是我理解的命令模式
最新文章
- 第一届山东省ACM——Phone Number(java)
- 嵌入式Linux驱动学习之路(十四)按键驱动-同步、互斥、阻塞
- 白话讲MyIsam和InnoDB的区别
- EA中的模板管理
- 基于Token的WEB后台认证机制
- Backbone.js Wine Cellar 教程
- 解决虚拟机linux端mysql数据库无法远程访问
- bugzilla_firefox
- popular net
- 数组作为hash元素的时候如何push
- sql server 2016 management studio没有的解决方式
- jquery介绍
- Java泛型的好处
- cf B. Resort
- 用Java写个ftp传输类实现文件的上传和下载,用ikvmc转成dll
- Java 异常归纳总结
- EXP AND IMP
- 【转载】doxygen+graphviz生成代码文档
- 阿里云CentOS7.2服务器的安装
- 关于C的全局变量
热门文章
- Unity3d 实现鼠标左键点击地形使角色移动到指定地点[脚本]
- 【数据挖掘】分类之kNN(转载)
- 篇一、安装配置Android Studio
- MapReduce源码分析之InputFormat
- Mysql主从配置笔记
- Mysql----MySQL的mysql_insert_id和LAST_INSERT_ID(转)
- android greendao3.0 多表关联关系讲解(转)
- web 开发之js---HTML5之广播聊天室
- iOS_3_图片浏览
- redis 集群 搭建