《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 相关文章推荐
无阻塞加载脚本分析[全]
Jan 20 Javascript
JavaScript实现数字数组正序排列的方法
Apr 06 Javascript
如何用angularjs制作一个完整的表格
Jan 21 Javascript
基于jquery实现智能表单验证操作
May 09 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
Feb 26 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
Aug 31 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
Aug 22 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
Aug 25 Javascript
jquery轻量级数字动画插件countUp.js使用详解
Oct 17 jQuery
vue中的循环对象属性和属性值用法
Sep 04 Javascript
js仿淘宝放大镜效果
Dec 28 Javascript
解决vue项目本地启动时无法携带cookie的问题
Feb 06 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
社区(php&amp;&amp;mysql)四
2006/10/09 PHP
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
PHP通用分页类page.php[仿google分页]
2008/08/31 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
基于initPHP的框架介绍
2013/04/18 PHP
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
python中self原理实例分析
2015/04/30 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
在python中画正态分布图像的实例
2019/07/08 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
优秀团员自我评价范文
2014/04/23 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP