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 相关文章推荐
js 中 document.createEvent的用法
Aug 29 Javascript
JavaScript模板入门介绍
Sep 26 Javascript
javascript里模拟sleep(两种实现方式)
Jan 25 Javascript
JSON传递bool类型数据的处理方式介绍
Sep 18 Javascript
详解addEventListener的三个参数之useCapture
Mar 16 Javascript
jQuery插件pagewalkthrough实现引导页效果
Jul 05 Javascript
9个让JavaScript调试更简单的Console命令
Nov 14 Javascript
JS实现购物车特效
Feb 02 Javascript
Vue打包后出现一些map文件的解决方法
Feb 13 Javascript
vue如何在自定义组件中使用v-model
May 14 Javascript
js form表单input框限制20个字符,10个汉字代码实例
Apr 12 Javascript
JavaScript实现复选框全选功能
Apr 11 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
PHP新手上路(七)
2006/10/09 PHP
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
php通过ajax实现双击table修改内容
2014/04/28 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
JS 实现百度搜索功能
2018/02/01 Javascript
详解JavaScript的变量
2019/04/04 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
2019/06/17 Python
简单了解python PEP的一些知识
2019/07/13 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
单位委托书怎么写
2014/08/02 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
关于运动会的广播稿
2014/09/22 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
2015年外联部工作总结
2015/04/03 职场文书
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python