js设计模式的学习





  
  
JS的设计模式(包括观察者模式)
<script src="js/jquery-3.2.1.js"></script>




  
  
<script> //函数式的写法-------------------------------------------------- // $(function(){ // var $content = $("#content"); // function getnum(){ // return $content.val().length; // } // function render(){ // var num = getnum(); // if($("#contentCount").length===0){ // $content.after(""); // } // $("#contentCount").html(num+"个字"); // } // $content.on('keyup',function(){ // render(); // }); // }); //2. 使用变量模拟单个命名空间,统一入口调用方法-------------------------------- //var textCount = { // input:null, // init:function(config){ // this.input = $(config.id); // this.bind(); // return this; // }, // bind:function(){ // var self = this; // console.log(self); // this.input.on("keyup",function(){ // self.render(); // }); // }, // render:function(){ // var num = this.getnum(); // if($("#contentCount").length === 0){ // $("#content").after(""); // } // $("#contentCount").html(num+'个字'); // }, // getnum:function(){ // return this.input.val().length; // } //}; //$(function(){ // textCount.init({id:'#content'}).render(); //}); //3,函数闭包的写法----------------------------------------------- //var textCount = (function(){ // var _bind = function(that){ // console.log('bind'); // that.input.on("keyup",function(){ // that.render(); // }); // }; // var _getnum = function(that){ // console.log('getnum'); // return that.input.val().length; // }; // var TextCountFunction = function(){ // console.log('create tcf'); // }; // TextCountFunction.prototype.init = function(config){ // this.input = $(config.id); // _bind(this); // console.log('init'); // return this; // }; // TextCountFunction.prototype.render = function(){ // var num = _getnum(this); // if($("#contentCount").length === 0){ // $("#content").after(""); // } // $("#contentCount").html(num+"个字!"); // console.log('render'); // }; // console.log(this); // return TextCountFunction; //})(); //$(function(){ // new textCount().init({id:'#content'}).render(); //}); //4.面向对象---------------------------------------------------- //function Content(id){ // this.id=id; // // function _render(){ // console.log(_num()); // if($("#contentCount").length===0){ // $(id).after(""); // } // $("#contentCount").html(_num()+'个字'); // }; // _num = function(){ // var temp = $(id).val().length; // return temp; // }; // this.bind = function(){ // console.log(this.id); // $(this.id).on('keyup',function(){ // _render(); // }); // }; //}; //new Content('#content').bind(); //5. 引入事件机制(观察者模式)------------------------------------- (function($){ var o = $({}); $.subscribe = function(){ o.on.apply(o,arguments); }; $.unsubscribe = function(){ o.off.apply(o,arguments); }; $.publish = function(){ o.trigger.apply(o,arguments); }; })(jQuery); function getnum(){ return $("#content").val().length; } function render(e,data){ if($("#contentCount").length===0){ $("#content").after(""); } $("#contentCount").html(data+"个字"); } $.subscribe("/some/topice",render); $("#content").on("keyup",function(){ var num = getnum(); $.publish("/some/topice",num); console.log(num); }); //这里是不是实现了一个单向的绑定呢? </script>

学习网址:http://lib.csdn.net/article/javascript/29580,面向对象模式之前是学习他的,后面实在太复杂,非常感谢,学了不少好东西,面向对象模式后面自己写的,有不对地方请多指教!微笑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值