<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>javascript高级语法8-链式调用</title>
</head>
<body>
<div id="box"></div>
<script type="text/javascript">
function demo1(){
(function(){
//创建一个cat类
function Cat(name){
this.name = name;
this.run = function(){
document.write(this.name+" start run"+"<br/>")
}
this.stopRun = function(){
document.write(this.name+" stop run"+"<br/>")
}
this.sing = function(){
document.write(this.name+" start singing"+"<br/>")
}
this.stopSing = function(){
document.write(this.name+" stop sing"+"<br/>")
}
}
//测试
var c = new Cat("maomi");
c.run();
c.sing();
c.stopRun();
c.stopSing();
})()} function demo2(){
(function(){
//创建一个cat类
function Cat(name){
this.name = name;
this.run = function(){
document.write(this.name+" start run"+"<br/>")
return this;
}
this.stopRun = function(){
document.write(this.name+" stop run"+"<br/>")
return this;
}
this.sing = function(){
document.write(this.name+" start singing"+"<br/>")
return this;
}
this.stopSing = function(){
document.write(this.name+" stop sing"+"<br/>")
return this;
}
}
//测试
var c = new Cat("lili");
c.run().sing().stopRun().stopSing(); })()
} //为了给类(Function类)扩展函数,定义一个它的静态函数
Function.prototype.method = function(name,fn){
this.prototype[name] = fn;
return this;
};
(function(){
//模仿jquery链式调用
function _$(els){};
//准备方法
_$.onready = function(fn){
//按需求把对象(_$)注册到window上
window.$ = function(){
return new _$(arguments);
}
fn();
}
//链式的对象增加jquery库提供的操作函数。
_$.method("addEvent",function(type,fn){
fn();
}).method("getEvent",function(fn,e){
fn();
}).method("addClass",function(className,fn){
fn();
}).method("removeClass",function(className,fn){
fn();
}).method("replaceClass",function(oldClass,newClass){
fn();
}).method("getStyle",function(el,fn){
fn();
}).method("setStyle",function(el,fn){
fn();
}).method("load",function(url,fn){
fn();
}) //开始使用
_$.onready(function(){
$("#box").addEvent("click",function(){
alert("click event")
})
})
})()
</script>
</body>
</html>

JavaScript设计模式-8.链式调用的更多相关文章

  1. JavaScript中的链式调用

    链模式 链模式是一种链式调用的方式,准确来说不属于通常定义的设计模式范畴,但链式调用是一种非常有用的代码构建技巧. 描述 链式调用在JavaScript语言中很常见,如jQuery.Promise等, ...

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

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

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

    方法的链式调用: (function() { //私有类 function _$ (els) { this.elements = []; for(var i = 0, len = els.length ...

  4. 关于JavaScript中的setTimeout()链式调用和setInterval()探索

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

  5. javascript学习(10)——[知识储备]链式调用

    上次我们简单的说了下单例的用法,这个也是在我们java中比较常见的设计模式. 今天简单说下链式调用,可能有很多人并没有听过链式调用,但是其实只要我简单的说下的话,你肯定基本上都在用,大家熟知的jQue ...

  6. js原生设计模式——2面向对象编程之js原生的链式调用

    技巧点:对象方法中返回当前对象就可以链式调用了,即方法中写return this; <!DOCTYPE html><html lang="en"><h ...

  7. JavaScript实现链式调用

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

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

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

  9. JavaScript链式调用

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

随机推荐

  1. 4、Docker的安装

      docker官方安装文档 Mac上安装Docker   Install Docker for Mac | Docker Documentation Windows安装Docker   Instal ...

  2. Sqlserver 密码过期时间查询

    DECLARE @login nvarchar(30) -- 查询设定密码过期的登陆账号SELECT @login = nameFROM sys.sql_loginsWHERE is_expirati ...

  3. Replication--如何使用快照来初始化化请求订阅

    这是一篇针对新人的知识普及文章,老人慎入! 在快照发布和事务发布中,SQL Server需要使用快照来将数据库某一时间点的数据传递给订阅,快照使用BCP的机制. 首先我们需要查看和设置快照的生成目录, ...

  4. 什么是ODBC和JDBC?

    jdbc是使用通过JAVA的数据库驱动直接和数据库相连,而jdbc-odbc连接的是ODBC的数据源,真正与数据库建立连接的是ODBC! 建议使用JDBC直接连接,同时最好使用连接池! JDBC 是 ...

  5. 写了一个Windows服务,通过C#模拟网站用户登录并爬取BUG列表查询有没有新的BUG,并提醒我

    写了一个Windows服务,通过C#模拟网站用户登录并爬取BUG列表查询有没有新的BUG,并提醒我 1.HttpUtil工具类,用于模拟用户登录以及爬取网页: using System; using ...

  6. 【题解】 AGC029-A Irreversible operation

    传送门 定位:思维好题. 考虑无论如何每一个W都会和前面的B在一起交换一次,所以直接求和就好了. 注意long long的使用. #include<stdio.h> #include< ...

  7. 【OCP题库】最新CUUG OCP 12c 071考试题库(66题)

    66.(22-19)choose two Examine the structure proposed for the TRANSACTIONS table: Which two statements ...

  8. video视频内容填充整个播放空间方法

    关于video视频内容填充整个播放空间方法一般上传的视频都没法占满video,看起来很不美观,解决办法很简单video{ object-fit:fill;}

  9. python 取出字典的键或者值/如何删除一个字典的键值对/如何遍历字典

    先定义一个字典并直接进行初始化赋值 my_dict = dict(name="lowman", age=45, money=998, hourse=None) 1.取出该字典所有的 ...

  10. js 正则(自己一点点的笔记)

    alert(/[abc]/.test("c")); //true alert("a bat ,a Cat,a fAt bat ,a faT cat".match ...