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 事件绑定问题
Jan 01 Javascript
jQuery实现可拖动的浮动层完整代码
May 27 Javascript
jQuery统计指定子元素数量的方法
Mar 17 Javascript
7个有用的jQuery代码片段分享
May 19 Javascript
详解angular用$sce服务来过滤HTML标签
Apr 11 Javascript
JS实现图片预览的两种方式
Jun 27 Javascript
Vue实现搜索 和新闻列表功能简单范例
Mar 16 Javascript
es6基础学习之解构赋值
Dec 10 Javascript
vue-cli3 从搭建到优化的详细步骤
Jan 20 Javascript
使用vuepress搭建静态博客的示例代码
Feb 14 Javascript
JS异步执行结果获取的3种解决方式
Feb 19 Javascript
vue+element实现表格新增、编辑、删除功能
May 28 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用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
php中__toString()方法用法示例
2016/12/07 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python根据区号生成手机号码的方法
2015/07/08 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
python爬取内容存入Excel实例
2019/02/20 Python
Python 串口读写的实现方法
2019/06/12 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
PyTorch中permute的用法详解
2019/12/30 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
小学见习报告
2015/06/23 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
室外天线与收音机天线杆接合方法
2022/04/05 无线电