《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析


Posted in Javascript onApril 07, 2020

本文实例讲述了Javascript面向对象程序设计链式调用。分享给大家供大家参考,具体如下:

1.链式调用:

jquery可能是目前大家最常用到的js框架了,也习惯了如下的调用方式:

$('.someclass').show().css('xxx','xxxx').click(function(){}).xxx……

这种调用方式就叫做链式调用,也就是说在调用一个方法之后,可以使用方法的返回值来继续进行方法调用。

2.如何实现链式调用:

了解了什么是链式调用,我们再来看如何实现链式调用,从1中所述我们应该知道链式调用的关键在于方法的返回值,只要方法的返回值都是调用该方法的对象,那么,我们就可以实现链式调用了,我们仿照jquery,使用$作为对象的选择器:

(function(){

 function _$(els){

this.elements = [];

for(var i=0, len=els.length;i<len;i++){

 var elements = els[i];

 if(typeof element = ‘string'){

  element = document.getElementByIdx_x_x(element);

}

}

this.elements.push(element);

}

_$.prototype = {

 each:function(fn){

  for(var i=0,len=this.elements.length;i<len;i++){

   fn.call(this, this.elements[i]);

}

return this;

},

setStyle: function(prop, val){

……

},

show:function(){

……

},

……

}

window.$ = function(){

 return new _$(arguments);

}

})();

上面的代码就实现了一个简单的链式调用对象,并且使用一个_$作为$的别名,以防止$被其他代码改写而导致整个对象的定义丢失。

Javascript 相关文章推荐
js类后台管理菜单类-MenuSwitch
Sep 12 Javascript
屏蔽F1~F12的快捷键的js函数
May 06 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
May 08 Javascript
JS回调函数的应用简单实例
Sep 17 Javascript
CSS中position属性之fixed实现div居中
Dec 14 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
Aug 17 Javascript
bootstrap下拉菜单使用方法解析
Jan 13 Javascript
Bootstrap实现各种进度条样式详解
Apr 13 Javascript
javascript性能优化之分时函数的介绍
Mar 28 Javascript
javascript 函数的暂停和恢复实例详解
Apr 25 Javascript
js实现电灯开关效果
Jan 19 Javascript
Vue组件化(ref,props, mixin,.插件)详解
May 15 Vue.js
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
Apr 07 #Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
Apr 07 #Javascript
flexible.js实现移动端rem适配方案
Apr 07 #Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
Apr 07 #Javascript
详解vue-flickity的fullScreen功能实现
Apr 07 #Javascript
小谈angular ng deploy的实现
Apr 07 #Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 #Javascript
You might like
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
php简单图像创建入门实例
2015/06/10 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
python读取注册表中值的方法
2013/04/08 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
Python将图片转换为字符画的方法
2020/06/16 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
私有程序集与共享程序集有什么区别
2013/04/05 面试题
Linux如何修改文件和文件夹的权限
2013/09/05 面试题
七一建党日演讲稿
2014/09/05 职场文书
七一讲话心得体会
2014/09/05 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python
python神经网络 使用Keras构建RNN训练
2022/05/04 Python