JavaScript轻松创建级联函数的方法示例


Posted in Javascript onFebruary 10, 2017

一、级联函数是什么?

在一行代码上,调用一个接一个的方法。这种技术在 JQuery 或者其他 JavaScript 库中是非常常见的。
代码如下:

$('#myDiv').fadeOut().html('帅哥, 你好!').fadeIn();

或者:

myStr1.replace('k', 'R').toUpperCase().substr(0,4);

这种代码让我们能像阅读文字一样来阅读代码,不仅简洁,可读性强更便于维护,提高开发效率。

那怎么用呢?

要使用级联函数,我们必须在每个函数中返回 this 对象(也就是后面方法中操作的对象)。现在我们开始创建个级联函数:

var usresData = [
 {firstName: 'Zhang', lastName: 'San', email: '111@qq.com', id: 102},
 {firstName: 'Li', lastName: 'Si', email: '222@qq.com', id: 103},
 {firstName: 'Wang', lastName: 'Wu', email: '333@qq.com', id: 105}
];

function getCaseName(str) {
 return str.replace(/\w\S*/g, function(txt){
  return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
 })
}

接下来我们定义个包含级联函数的对象:

var userController = {
 currentUser = '',
 findUser = function (userEmail) {
  var arrayLength = usersData.length, i;
  for (i = arrayLength - 1; i >= 0; i--) {
   if (usersData[i].email === userEmail) {
    this.currentUser = usersData[i];
    break;
   }
  }
  return this;
 },
 formatName: function () {
  if (this.currentUser) {
   this.currentUser.fullName = getCaseName(this.currentUser.firstName) + ' ' + getCaseName(this.currentUser.lastName);
  }
  return this;
 },
 createLayout: function () {
  if (this.currentUser) {
   this.currentUser.viewData = '<h2>成员: ' + this.currentUser.fullName + '</h2>'​
   + '<p>ID: ' + this.currentUser.id + '</p>' + '<p>Email: ' + this.currentUser.email + '</p>';
  }
  return this;
 },
 displayUser: function () {
  if (!this.currentUser) return;
  $('.members-wrapper').append(this.currentUser.viewData);
 }
}

定义完了级联函数,我们调用的时候就会非常的优雅了:

userController.findUser('111@qq.com').formatName().createLayout().displayUser();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
JavaScript子窗口ModalDialog中操作父窗口对像
Dec 11 Javascript
jquery封装的对话框简单实现
Jul 21 Javascript
用C/C++来实现 Node.js 的模块(一)
Sep 24 Javascript
JavaScript设计模式初探
Jan 07 Javascript
jQuery实现底部浮动窗口效果
Sep 07 Javascript
浅析JavaScript中作用域和作用域链
Dec 06 Javascript
Bootstrap输入框组件简单实现代码
Mar 06 Javascript
图片加载完成再执行事件的实例
Nov 16 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
May 16 Javascript
angularjs通过过滤器返回超链接的方法
Oct 26 Javascript
Node.js 多进程处理CPU密集任务的实现
May 26 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
Oct 15 Javascript
JS实现的数字格式化功能示例
Feb 10 #Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
Feb 10 #Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
Feb 10 #Javascript
BootStrap Datetimepicker 汉化的实现代码
Feb 10 #Javascript
解决URL地址中的中文乱码问题的办法
Feb 10 #Javascript
tablesorter.js表格排序使用方法(支持中文排序)
Feb 10 #Javascript
jquery.tableSort.js表格排序插件使用方法详解
Aug 12 #Javascript
You might like
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP getName()函数讲解
2019/02/03 PHP
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
python获取android设备的GPS信息脚本分享
2015/03/06 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
Python I/O与进程的详细讲解
2019/03/08 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
几个Shell Script面试题
2012/08/31 面试题
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
写给老师的感谢信
2015/01/20 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
教师辞职书范文
2015/02/26 职场文书
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP