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 相关文章推荐
W3C Group的JavaScript1.8 新特性介绍
May 19 Javascript
Extjs中使用extend(js继承) 的代码
Mar 15 Javascript
node.js集成百度UE编辑器
Feb 05 Javascript
js运动动画的八个知识点
Mar 12 Javascript
jQuery对JSON数据进行排序输出的方法
Jun 24 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
Jun 07 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
Sep 21 Javascript
JS实现标签滚动切换效果
Dec 25 Javascript
vue移动端UI框架实现QQ侧边菜单组件
Mar 09 Javascript
JavaScript callback回调函数用法实例分析
May 08 Javascript
原生JS实现的轮播图功能详解
Aug 06 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
python实现无证书加密解密实例
2014/10/27 Python
python列表操作实例
2015/01/14 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
Python递归函数定义与用法示例
2017/06/02 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
T3官网:头发造型工具
2019/12/26 全球购物
大整数数相乘的问题
2012/07/22 面试题
车间调度岗位职责
2013/11/30 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
授权委托书样本
2014/09/25 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
PL350与SW11的比较
2021/04/22 无线电
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
Go 中的空白标识符下划线
2022/03/25 Golang
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL
MongoDB数据库之添删改查
2022/04/26 MongoDB
Redis实现短信验证码登录的示例代码
2022/06/14 Redis