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 相关文章推荐
div移动 输入框不能输入的问题
Nov 19 Javascript
javascript匿名函数应用示例介绍
Mar 07 Javascript
JQuery解析HTML、JSON和XML实例详解
Mar 29 Javascript
使用node.js 获取客户端信息代码分享
Nov 26 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
jQuery实现的瀑布流加载效果示例
Sep 13 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
Jan 19 Javascript
echarts学习笔记之图表自适应问题详解
Nov 22 Javascript
vue实现选项卡及选项卡切换效果
Apr 24 Javascript
vue自定义指令用法经典实例小结
Mar 16 Javascript
详解Javascript实践中的命令模式
May 05 Javascript
vue递归实现树形组件
Jul 15 Vue.js
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和MySQL保存和输出图片
2006/10/09 PHP
PHP读取MySQL数据代码
2008/06/05 PHP
php的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
php验证码实现代码(3种)
2015/09/07 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
github配置使用指南
2014/11/18 Python
python正则表达式的使用
2017/06/12 Python
浅谈Python处理PDF的方法
2017/11/10 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
python 函数中的参数类型
2020/02/11 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
在校生自我鉴定
2014/01/23 职场文书
《花瓣飘香》教学反思
2014/04/15 职场文书
企业晚会策划方案
2014/05/29 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
边城读书笔记
2015/06/29 职场文书