当前位置: 首页 > news >正文

网站制作实训网站建设 天秀网络

网站制作实训,网站建设 天秀网络,国家建设部查询网站,网站做好后观察者 是一种管理人与任务之间的关系的得力工具#xff0c;实质就是你可以对程序中某个对象的状态进行观察#xff0c;并且在其发生改变时能够得到通知。一般有两种实现方式推或拉#xff0c;在这个过程中各方的职责如下#xff1a; 订阅者可以订阅和退订#xff0c;他…观察者 是一种管理人与任务之间的关系的得力工具实质就是你可以对程序中某个对象的状态进行观察并且在其发生改变时能够得到通知。一般有两种实现方式推或拉在这个过程中各方的职责如下 订阅者可以订阅和退订他们还要接收并且可以在由人投送和自己收取之间进行选择发布者负责投关他们可以在送出和由人取之间进行选择 function Publisher() {this.subscribers []; } //投送方法 Publisher.prototype.deliver function(data) {this.subscribers.forEach(function(fn) {fn(data);});return this; }; //订阅方法 Function.prototype.subscribe function(publisher) {var that this;var alreadyExists publisher.subscribers.some(function(el) {if ( el that ) {return;}});if ( !alreadyExists ) {publisher.subscribers.push(this);}return this; }; //退订方法 Function.prototype.unsubscribe function(publisher) {var that this;publisher.subscribers publisher.subscribers.filter(function(el) {if ( el ! that ) {return el;}});return this; }; var publisherObject new Publisher; var observerObject function(data) {// process dataconsole.log(data);// unsubscribe from this publisherarguments.callee.unsubscribe(publisherObject); }; observerObject.subscribe(publisherObject); 动画 // Publisher API var Animation function(o) {this.onStart new Publisher,//三个可监视时刻this.onComplete new Publisher,this.onTween new Publisher; }; Animation.method(fly, function() {// begin animationthis.onStart.deliver();for ( ... ) { // loop through frames// deliver frame numberthis.onTween.deliver(i); }// end animationthis.onComplete.deliver();});// setup an account with the animation manager var Superman new Animation({...config properties...});// Begin implementing subscribers var putOnCape function(i) { }; var takeOffCape function(i) { };putOnCape.subscribe(Superman.onStart); takeOffCape.subscribe(Superman.onComplete);// fly can be called anywhere Superman.fly(); // for instance: addEvent(element, click, function() {Superman.fly(); }); 事件监听器 var element document.getElementById(‘a’); var fn1 function(e) {// handle click }; var fn2 function(e) {// do other stuff with click };addEvent(element, ‘click’, fn1); addEvent(element, ‘click’, fn2); 命令 是一种封装方法调用的方式命令模式与普通函数不同。它可以用来对方法调用进行参数化处理和传送经这样处理过的方法调用可以在任何需要的时候执行。它也可以用来消除调用操作的对象和实现操作的对象之间的耦合。 它在创建用户界面时非常有用特别是在需要不受限制的取消操作的时候。它还可以用来替代回调函数 因为它能够提高在对象间传递的操作的模块化程度。 这种模式适合JSP中的ACTION的实现在一个ACITON中封装多个命令如果只封装一个就没有多大意思了。 /* AdCommand interface. */ var AdCommand new Interface(AdCommand, [execute]);/* StopAd command class. */ var StopAd function(adObject) { // implements AdCommandthis.ad adObject; }; StopAd.prototype.execute function() {this.ad.stop(); };/* StartAd command class. */ var StartAd function(adObject) { // implements AdCommandthis.ad adObject; }; StartAd.prototype.execute function() {this.ad.start(); };/* Useage. 这种方式后就把按钮和他需要调用的操作之间解耦了*/ var startCommand new StartAd(action); var stopCommand new StopAd(action); new UiButton(Start , startCommand); new UiButton(Stop , stopCommand); /*匿名函数的写法省略了很多代码*/ function makeStart(adObject) {return function() { adObject.start();}; } function makeStop(adObject) {return function() {adObject.stop();}; }/* Implementation code. */ var startCommand makeStart(ads[i]); var stopCommand makeStop(ads[i]); startCommand(); stopCommand(); 多数命令模式都由以下几种角色组成客户创建命令调用者执行命令接收者在命令执行时执行相应的操作。 接口格式 var Command new Interface(Command, [execute]); Interface.ensureImplements(someCommand, Command); someCommand.execute(); if(typeof someCommand ! function) {throw new Error(Command isnt a function); } 命令对象格式 /* SimpleCommand, a loosely coupled, simple command class. */ var SimpleCommand function(receiver) { // implements Commandthis.receiver receiver; }; SimpleCommand.prototype.execute function() {this.receiver.action(); };/* ComplexCommand, a tightly coupled, complex command class. */ var ComplexCommand function() { // implements Commandthis.logger new Logger();this.xhrHandler XhrManager.createXhrHandler();this.parameters {}; }; ComplexCommand.prototype {setParameter: function(key, value) {this.parameters[key] value;},execute: function() {this.logger.log(Executing command);var postArray [];for(var key in this.parameters) {postArray.push(key this.parameters[key]);}var postString postArray.join();this.xhrHandler.request(POST, script.php, function() {}, postString);} };/* GreyAreaCommand, somewhere between simple and complex. */ var GreyAreaCommand function(recevier) { // implements Commandthis.logger new Logger();this.receiver receiver; }; GreyAreaCommand.prototype.execute function() {this.logger.log(Executing command);this.receiver.prepareAction();this.receiver.action(); };var openCommand new MenuCommand(fileActions.open); var openMenuItem new MenuItem(Open, openCommand); fileMenu.add(openMenuItem); 取消操作 这种操作其实就是把堆栈和excute相反的操作结合使用。 var MoveUp function(cursor) { // implements ReversibleCommandthis.cursor cursor; }; MoveUp.prototype {execute: function() {cursor.move(0, -10);},undo: function() {cursor.move(0, 10); } };
http://www.zqtcl.cn/news/274174/

相关文章:

  • 企业推广网站有哪些做百度推广需要什么条件
  • 如何实现网站的快速排名怎么做网站模板
  • 数据型网站建设wordpress 阅读统计
  • a做爰网站集宁建设局网站
  • 黄山建设网站公司电话wordpress微信分享图
  • 大数据网站网站的备案流程图
  • 如果自己做网站wordpress付款插件
  • 网站建设项目的结论网站开发合同适用印花税
  • 网站建设经验与教训普陀网站建设推广
  • 12306网站是是阿里巴巴做的吗专业建网站设计公司
  • 关于申请网站建设经费的请示网推推荐信
  • 网站建设请款报告网站服务器租用价格
  • 贵州建设网老网站手机网站建设运营方案
  • 网站方案范文唐山自助建站模板
  • 金华网站制作网站建设的功能需求
  • 用iis建立网站口碑营销案例分析
  • 注册网站要求线上设计师与线下设计师的区别
  • 个人备案 网站内容网站备案如何查询
  • 宿州科技网站建设百度网站外链发布平台
  • 织梦移动网站wordpress父文章显示不全
  • 游戏攻略网站怎么做网站开发需求确认书
  • 做高大上分析的网站电商到底干嘛的
  • 物流网站哪个好网络推广就找南昌莫非传媒
  • 查看网站空间企业网站管理系统介绍
  • 重庆市工程建设信息网新网站艺术品商城网站开发
  • 上海网站制作商wordpress改主题
  • 钰鸣厦门网站建设2023热点新闻事件
  • 网络营销的主要形式有建设网站免费搭建网站哪个好
  • 建一个网站需要哪些人aso是什么意思
  • 电商网站有哪些淘宝运营培训班哪里有