《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 相关文章推荐
Jquery下attr和removeAttr的使用方法
Dec 28 Javascript
JS打开新窗口防止被浏览器阻止的方法
Jan 03 Javascript
JQuery查找DOM节点的方法
Jun 11 Javascript
第二篇Bootstrap起步
Jun 21 Javascript
用jQuery的AJax实现异步访问、异步加载
Nov 02 Javascript
AngularJS入门教程之表单校验用法示例
Nov 02 Javascript
JS 在数组指定位置插入/删除数据的方法
Jan 12 Javascript
vue 本地环境跨域请求proxyTable的方法
Sep 19 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
Jun 20 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
May 29 Javascript
vue动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
vue3.0中setup使用(两种用法)
Dec 02 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
JS代码放在head和body中的区别分析
2011/12/01 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
在Python的Django框架中编写编译函数
2015/07/20 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
python交换两个变量的值方法
2019/01/12 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
民生工程实施方案
2014/03/22 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
创业计划书之家政服务
2019/09/18 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle