JavaScript设计模式——方法的链式调用

时间:2023-02-19 19:06:30

方法的链式调用:

         (function() {
//私有类
function _$ (els) {
this.elements = [];
for(var i = 0, len = els.length; i < len; ++i){
var element = els[i];
if(typeof element === 'string'){
element = document.getElementById(element);
}
this.elements.push(element);
}
}
_$.prototype = {
each: function(fn) {
for (var i=0, len=this.elements.length; i<len.length; ++i) {
fn.call(this, this.elements[i]);
};
return this;
},
setStyle: function(prop, val) {
this.each(function(el){
el.style[prop] = val;//el即dom元素,给每个元素设置样式
});
return this;
},
show: function() {
var that = this;
this.each(function() {
that.setStyle('display', 'block');
});
return this;
},
addEvent: function(type, fn) {
var add = function(el) {
if(widow.addEventListener){
el.addEventListener(type, fn, false)
}
else if(widow.attachEvent){
el.attachEvent('on'+type, fn);
}
}; this.each(function(el) {
add(el);
});
return this;
}
}
window.$ = function() {
return new _$(arguments);
};
})();

看看该类的每一个方法的最后一行,你会发现他们都以“returen this”结束。这将会用以调用方法的对象传个调用链上的下一个方法。支持链式调用的接口带来的可能性是无穷的。现在你可以这样编写代码:

         $(widow).addEvent('load', function() {
$('test-1','test-2').show().
setStyle('color', 'red').
addEvent('click', function() {
$(this).setStyle('color', 'green');
});
}

这会把一个时事件监听器关联到window对象的load事件。它执行的时候回立即显示ID值为test-1和test-2的两个元素并将其中的文字设置为红色,随后,它会为这两个元素添加click事件监听器,其作用是在他们被点击时将文字设置为绿色。

JavaScript设计模式——方法的链式调用的更多相关文章

  1. JavaScript设计模式 Item 5 --链式调用

    1.什么是链式调用 这个很容易理解,例如: $(this).setStyle('color', 'red').show(); 一般的函数调用和链式调用的区别:调用完方法后,return this返回当 ...

  2. 如何写 JS 的链式调用 ---》JS 设计模式《----方法的链式调用

    1.以$ 函数为例.通常返回一个HTML元素或一个元素集合. 代码如下: function $(){ var elements = []; ;i<arguments.length;i++){ v ...

  3. 《javascript设计模式》笔记之第六章:方法的链式调用

    这一章要实现的就是jQuery的那种链式调用,例子: $(this).setStyle('color', 'green').show(); 一:调用链的结构: 首先我们来看一下最简单的$()函数的实现 ...

  4. 关于JavaScript中的setTimeout&lpar;&rpar;链式调用和setInterval&lpar;&rpar;探索

    http://www.cnblogs.com/Wenwang/archive/2012/01/06/2314283.html http://www.cnblogs.com/yangjunhua/arc ...

  5. js实现方法的链式调用

    假如这里有三个方法:person.unmerried();person.process();person.married();在jQuery中通常的写法是:person.unmerried().pro ...

  6. JS设计模式——6&period;方法的链式调用

    什么是链式调用 这个很容易理解,例如: $(this).setStyle('color', 'red').show(); 分解链式调用 链式调用其实是两个部分: 1.操作对象(也就是被操作的DOM元素 ...

  7. JavaScript实现链式调用

    学习Jquery的时候,我们通常会看到链式调用的写法 $(window).addEvent('load', function(){ $('test').show().setStyle('color', ...

  8. 浅析 JavaScript 链式调用

    对$函数你已经很熟悉了.它通常返回一个html元素或一个html元素的集合,如下: function$(){ var elements = []; for(vari=0,len=arguments.l ...

  9. 简谈 JavaScript、Java 中链式方法调用大致实现原理

    相信,在 JavaScript .C# 中都见过不少链式方法调用,那么,其中实现该类链式调用原理,大家有没有仔细思考过?其中 JavaScript 类库:jQuery 中就存在大量例子,而在 C# 中 ...

随机推荐

  1. Windows下安装并设置Redis

    Redis对于Linux是官方支持的,安装和使用没有什么好说的,普通使用按照官方指导,5分钟以内就能搞定.详情请参考: http://redis.io/download 但有时候又想在windows下 ...

  2. &lbrack;SDJX2015&rsqb;面积

    [问题描述:] 一个六边形的每个内角均为120°,按顺时针给定它每条边的长度,求它的面积与边长为1的等边三角形的面积的比值. [输入:] 一行六个整数a,b,c,d,e,f,表示六条边的长度. [输出 ...

  3. java学习之线程池的实现

    package com.gh.threadpoor; import java.util.concurrent.ExecutorService; import java.util.concurrent. ...

  4. Unity 游戏框架搭建 &lpar;四&rpar; 简易有限状态机

    为什么用有限状态机?   之前做过一款跑酷游戏,跑酷角色有很多状态:跑.跳.二段跳.死亡等等.一开始是使用if/switch来切换状态,但是每次角色添加一个状态(提前没规划好),所有状态处理相关的代码 ...

  5. 201671010133 2016-2017-2 《java程序设计》 初学java!

    新学期伊始,我心中既充满了期待和希望,又有些许激动和感慨.期待的是即将接触许多新的知识,期待未来比过去过的更加踏实有趣,期待遇到更好的人和事等等.当然,面对从未了解过的新事物时,我想每个人的想法都大致 ...

  6. JAVA异步加回调的例子

    package com.sunchao.callback; /** * callback interface * @author Administrator * */ public interface ...

  7. &lbrack;再寄小读者之数学篇&rsqb;&lpar;2014-06-21 Beal-Kaot-Majda type logarithmic Sobolev inequality&rpar;

    For $f\in H^s(\bbR^3)$ with $s>\cfrac{3}{2}$, we have $$\bex \sen{f}_{L^\infty}\leq C\sex{1+\sen{ ...

  8. mysql之多表查询和pymysql模块

    一 多表查找方法 1 交叉连接:不使用任何的判断条件,生成笛卡尔积.第一个表的行数乘以第二个表的行数就等于笛卡尔积结果集的行数. mysql> select * from student,cla ...

  9. &lpar;笔记&rpar;arm-linux-gcc&sol;ld&sol;objcopy&sol;objdump参数总结

    说明:gcc是编译器,负责对c代码的编译, ld是连接器 负责将多个*.o的目标文件链接成elf可执行文件.elf可执行文件是unix常用的可执行文件类型,就像windows的exe文件.elf文件中 ...

  10. 彻底消除wine中文乱码&comma;QQ&comma;kugoo等等&period;&period;&period;&period;

    原文链接:http://forum.ubuntu.org.cn/viewtopic.php?t=290155 lendylongli wine下中文的配置方案步骤:1. 初始设置运行 winecfg, ...