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 通用javascript函数库整理
Aug 14 Javascript
基于JQuery实现的Select级联
Jan 27 Javascript
jQuery检测输入的字符串包含的中英文的数量
Apr 17 Javascript
JS设置cookie、读取cookie、删除cookie
Apr 17 Javascript
javascript字符串替换函数如何一次性全部替换掉
Oct 30 Javascript
微信小程序 本地数据存储实例详解
Apr 13 Javascript
使用vue实现grid-layout功能实例代码
Jan 05 Javascript
手动用webpack搭建第一个ReactApp的示例
Apr 11 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
Aug 10 Javascript
vue-router 起步步骤详解
Mar 26 Javascript
如何正确理解vue中的key详解
Nov 02 Javascript
Vue3+elementui plus创建项目的方法
Dec 01 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
flash javascript之间的通讯方法小结
2008/12/20 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
Django 静态文件配置过程详解
2019/07/23 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
电子商务专业学生的学习自我评价
2013/10/27 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
python 详解turtle画爱心代码
2022/02/15 Python