《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 相关文章推荐
jQueryUI的Dialog的简单封装
Jun 07 Javascript
javascript的事件触发器介绍的实现
Jun 05 Javascript
微信小程序 触控事件详细介绍
Oct 17 Javascript
js实现下一页页码效果
Mar 07 Javascript
axios学习教程全攻略
Mar 26 Javascript
JS原生轮播图的简单实现(推荐)
Jul 22 Javascript
ajax前台后台跨域请求处理方式
Feb 08 Javascript
vue router的基本使用和配置教程
Nov 05 Javascript
Vue项目服务器部署之子目录部署方法
May 12 Javascript
vue分页器组件编写方法详解
Jun 28 Javascript
vue 使用鼠标滚动加载数据的例子
Oct 31 Javascript
javascript实现异形滚动轮播
Nov 28 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
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
用文本作数据处理
2006/10/09 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
python实现html转ubb代码(html2ubb)
2014/07/03 Python
Python中unittest用法实例
2014/09/25 Python
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
python非递归全排列实现方法
2017/04/10 Python
python实现音乐下载器
2018/04/15 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
python求最大连续子数组的和
2018/07/07 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
Python简单基础小程序的实例代码
2019/04/28 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
领导失职检讨书
2014/02/24 职场文书
企业新年寄语
2014/04/04 职场文书
反腐倡廉标语
2014/06/24 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
学生会干部任命书
2015/09/21 职场文书
k-means & DBSCAN 总结
2021/04/27 Python