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 相关文章推荐
Exjs 入门篇
Apr 07 Javascript
js中匿名函数的N种写法
Sep 08 Javascript
js复制网页内容并兼容各主流浏览器的代码
Dec 17 Javascript
JS实现图片产生波纹一样flash效果的方法
Feb 27 Javascript
js数组如何添加json数据及js数组与json的区别
Oct 27 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
May 28 Javascript
JavaScript无阻塞加载和defer、async详解
Feb 26 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
vue移动端实现下拉刷新
Apr 22 Javascript
详解基于vue的服务端渲染框架NUXT
Jun 20 Javascript
微信浏览器左上角返回按钮监听的实现
Mar 04 Javascript
JavaScript 判断浏览器是否是IE
Feb 19 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强制运行广告的方法
2014/12/01 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
React简单介绍
2017/05/24 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
python使用chardet判断字符串编码的方法
2015/03/13 Python
Python中Random和Math模块学习笔记
2015/05/18 Python
python的unittest测试类代码实例
2017/12/07 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
python调用摄像头显示图像的实例
2018/08/03 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
python实现翻译word表格小程序
2020/02/27 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
信访工作者先进事迹
2014/01/17 职场文书
工作检讨书500字
2014/10/19 职场文书
追悼会答谢词
2015/01/05 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
创业计划书之花店
2019/09/20 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript