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

中国城乡建设部网站证书查询品牌网站建设小7蝌蚪

中国城乡建设部网站证书查询,品牌网站建设小7蝌蚪,哈尔滨网站建设模板策划,邯郸网站建设最新报价目录闭包与高阶函数Function 扩展函数柯里化函数单例模式透明的单例模式惰性单例策略模式策略模式发展策略模式实现闭包与高阶函数 Array.prototype.sort 接受一个函数当作参数#xff0c;用户可以自行在该函数内指定排序方式 // 由小到大排序 let res [1, 4, 2].sort((a, … 目录闭包与高阶函数Function 扩展函数柯里化函数单例模式透明的单例模式惰性单例策略模式策略模式发展策略模式实现闭包与高阶函数 Array.prototype.sort 接受一个函数当作参数用户可以自行在该函数内指定排序方式 // 由小到大排序 let res [1, 4, 2].sort((a, b) {return a - b; }); console.log(res);Function 扩展函数 通过对 Function 原型执行扩展可以达到类似装饰器的效果这也是 AOP 风格的体现 Function.prototype.before function (beforefn) {var __self this; // 保存原函数的引用return function () {// 返回包含了原函数和新函数的代理函数beforefn.apply(this, arguments); // 执行新函数修正thisreturn __self.apply(this, arguments); // 执行原函数}; };Function.prototype.after function (afterfn) {var __self this;return function () {var ret __self.apply(this, arguments);afterfn.apply(this, arguments);return ret;}; };var func function () {console.log(2); };func func.before(function () {console.log(1);}).after(function () {console.log(3);});func(); // 1,2,3柯里化函数 currying 又称部分求值。一个 currying 的函数首先会接受一些参数接受了这些参数之后该函数并不会立即求值而是继续返回另外一个函数刚才传入的参数在函数形成的闭包中被保存起来。待到函数被真正需要求值的时候之前传入的所有参数都会被一次性用于求值 var currying function (fn) {var args [];// 当调用柯里函数时不带任何参数直接执行所有栈中函数// 当调用柯里函数时带入了参数就会向args压入一个新的带参函数return function () {if (arguments.length 0) {return fn.apply(this, args);} else {[].push.apply(args, arguments);return arguments.callee;}}; };// 将cost写成一个IIFE函数之后其将转变为柯里函数 var cost (function () {var money 0;return function () {for (var i 0, l arguments.length; i l; i) {money arguments[i];}return money;}; })();var cost currying(cost); // 转化成currying函数cost(100); // 未真正求值 cost(200); // 未真正求值 cost(300); // 未真正求值 alert(cost()); // 求值并输出600单例模式 透明的单例模式 传统单例模式需要你知道当前对象是单例的且可以调用 getInstance 方法获取其实例 可以使用代理的方式管理单例而对象本身不处理代理相关逻辑 var CreateDiv function (html) {this.html html;this.init(); };CreateDiv.prototype.init function () {var div document.createElement(div);div.innerHTML this.html;document.body.appendChild(div); };// 使用代理创建以及识别单例 var ProxySingletonCreateDiv (function () {var instance;return function (html) {if (!instance) {instance new CreateDiv(html);}return instance;}; })();var a new ProxySingletonCreateDiv(sven1); var b new ProxySingletonCreateDiv(sven2);alert(a b); // true惰性单例 将获取单例的方法单独抽离出来通过此方法获取对象的单例 var getSingle function (fn) {var result;return function () {return result || (result fn.apply(this, arguments));}; };策略模式 策略模式的目的就是将算法的使用与算法的实现分离开来 策略模式发展 假设有这么一个场景需要通过员工名字及其薪水计算奖金 经典方法需要每次接收对应的两个参数方法内需要大量的 ifelse 做逻辑覆盖并且缺乏弹性违背开闭原则 策略模式实现 var strategies {S: function (salary) {return salary * 4;},A: function (salary) {return salary * 3;},B: function (salary) {return salary * 2;}, };var calculateBonus function (level, salary) {return strategies[level](salary); };console.log(calculateBonus(S, 20000)); // 输出80000 console.log(calculateBonus(A, 10000)); // 输出30000
http://www.dnsts.com.cn/news/225566.html

相关文章:

  • 完美网站建设导航类主题wordpress
  • 便宜高端网站设计推荐专业装修的商铺
  • 网页设计板式网站wordpress 禁用google字体
  • 福建百川建设有限公司网站网站建设价格标准案例
  • 网站里面如何做下载的app免费cmsasp
  • 建筑门户网站wordpress 黑糖主题
  • 百胜网站建设模板背景图片
  • html网站优化成都网站建设哪家设计好
  • 做网站充值犯法吗网络营销方式案例
  • 阜阳市城乡建设 档案馆网站wordpress评论列表美化
  • 云南住房和城乡建设厅网站首页360优化大师最新版下载
  • 视频网站自己怎么做的西安seo网站建设
  • 响应式网站是做多大尺寸什么外贸网站做箱包好
  • 江门高端网站建设wordpress5.0中文
  • 电子商务网站建设实训体会重庆九龙网站建设
  • 分类网站建设与开发网站推广员
  • 网站上的html内容怎么修改电商运营需要掌握哪些知识
  • 网站开发需求文档案例58网络门店管理系统
  • 上海大 小企业网站制作个人网站的设计和建设
  • 郑州哪里有做平台网站的一天能赚100元的app
  • 免费网站哪个好滨州网络推广
  • 建设银行江西分行官方网站目前做外贸平台
  • 监察部门网站建设方案squarespace wordpress
  • 用什么网站做查重报告中国交通建设集团英语网站
  • 公司网站可以免费建吗常见网站结构有哪些
  • 做兼职网站有哪些steam交易链接在哪里
  • 做企业形象网站电子商务网站建设需要哪些技术
  • 新手学做网站从哪里开始本溪市做网站公司
  • 做网站和做app哪个更难wordpress 侧边栏样式
  • 建网站需要注册公司吗做机械的专业外贸网站有哪些