《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 相关文章推荐
javascript得到当前页的来路即前一页地址的方法
Feb 18 Javascript
jQuery中DOM树操作之复制元素的方法
Jan 23 Javascript
jquery实现用户打分评分特效
May 28 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
Dec 11 Javascript
JavaScript实现页面定时刷新(定时器,meta)
Oct 12 Javascript
在一个页面重复使用一个js函数的方法详解
Dec 26 Javascript
react-router4 嵌套路由的使用方法
Jul 24 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
Nov 06 Javascript
js+SVG实现动态时钟效果
Jul 14 Javascript
layer.close()关闭进度条和Iframe窗的方法
Aug 17 Javascript
Vue结合路由配置递归实现菜单栏功能
Jun 16 Javascript
详解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
收音机指标测试方法及仪器
2021/03/01 无线电
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
一个支付页面DEMO附截图
2014/07/22 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
Python模块学习 re 正则表达式
2011/05/19 Python
python 控制语句
2011/11/03 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
Django的session中对于用户验证的支持
2015/07/23 Python
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
Python如何输出整数
2020/06/07 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
作弊检讨书1000字
2014/02/01 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
李强优秀员工观后感
2015/06/16 职场文书
运动员代表致辞
2015/07/29 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript