Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
计划按例如以下顺序完毕这篇笔记:
- Java程序猿的JavaScript学习笔记(1——理念)
- Java程序猿的JavaScript学习笔记(2——属性复制和继承)
- Java程序猿的JavaScript学习笔记(3——this/call/apply)
- Java程序猿的JavaScript学习笔记(4——this/闭包/getter/setter)
- Java程序猿的JavaScript学习笔记(5——prototype)
- Java程序猿的JavaScript学习笔记(6——面向对象模拟)
- Java程序猿的JavaScript学习笔记(7——jQuery基本机制)
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
- Java程序猿的JavaScript学习笔记(9——jQuery工具方法)
- Java程序猿的JavaScript学习笔记(10——jQuery-在“类”层面扩展)
- Java程序猿的JavaScript学习笔记(11——jQuery-在“对象”层面扩展)
- Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)
- Java程序猿的JavaScript学习笔记(13——jQuery UI)
- Java程序猿的JavaScript学习笔记(14——扩展jQuery UI)
这是笔记的第10篇,我们考虑怎样从有用角度,从“类”的角度对家Query进行扩展。
jQuery是一个紧凑的框架,专注解决最核心的问题,没有追求大而全,全部扩展机制对jQuery来说,至关重要。
JavaScript以函数为基础,今天我们试图基于jQuery构建一个针对自己项目的函数库,每一个函数实现特定的功能,同一时候对这些函数进行有效的组织。
作者博客:http://blog.csdn.net/stationxp
作者微博:http://weibo.com/liuhailong2008
转载请取得作者允许
1、目标
通过$调用我们的函数库。函数库依照功用分级组织。效果例如以下:
$.util.parseDate
$.util.parseDecimal
$.page.event.init
2、方法
上一篇我们了解到。通过jQuery.extend()能够方便地对jQuery进行扩展,甚至能覆盖extend本身。
jQuery.extend()支持下面几种函数签名:
jQuery.extend(obj);
jQuery.extend(isDeep,obj);
jQuery.extend(target,src1,src2,...);
jQuery.extend(isDeep,target,src1,src2,...);
我们能够extend源码的基础上改动,并覆盖原来的extend,这样改动一个可能被广泛使用的函数,改动了其它人对输入參数的预期,是不合适的,可能会误导其它人。输入了错误的參数,带来错误隐患。
我们又一次定义一个方法。例如以下:
jQuery.extend({
ns_extend : function(){
var ns, nss, target, i, src, length ;
length = arguments.length;
if(length>1){
ns = arguments[0];
i = 1;
} else {
i = 0;
}
if(!( src = arguments[i] ) || !jQuery.isPlainObject( src ) ){
return ;
}
target = this;
if(ns){
nss = ns.split('.'); // TODO 这里须要做好多字符过滤处理
for( var idx = 0; idx < nss.length ; ++idx ){
ns = nss[idx];// ns 的语义改变了,原来的语义使命结束,这里用作暂时变量
ns = jQuery.trim(ns);
if(ns){
target[ns] = target[ns] || {};
target = target[ns];
}
}
}
for( ; i < length ; ++i ){
src = arguments[i];
jQuery.extend( target, src );
}
}
});
jQuery.ns_extend('pet',{
miao : function(){
alert('i am a cat');
}
});
jQuery.ns_extend('my.fav.pet',{
wangwang : function(){
alert('i am a dog');
}
});
$.pet.miao();
$.my.fav.pet.wangwang();
目的达成。
Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)的更多相关文章
- Java程序猿的JavaScript学习笔记(汇总文件夹)
最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(3——this/call/apply)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(1——理念)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(6——面向对象模拟)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(5——prototype和Object内置方法)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- JavaScript:学习笔记(10)——XMLHttpRequest对象
JavaScript:学习笔记(10)——XMLHttpRequest对象 XHR对象 使用XMLHttpRequest (XHR)对象可以与服务器交互.您可以从URL获取数据,而无需让整个的页面刷新 ...
随机推荐
- 1.2(JavaScript学习笔记)JavaScript HTML DOM
一.DOM DOM全称为document object model(文档对象模型). 此处的文档指当前HTML文档,对象指HTML标签. 当网页被加载时,浏览器会创建页面的文档对象模型. 下面结合具体 ...
- Java编程思想学习(四)----第四章:控制执行流程
在Java中,涉及的关键字包括if-else.while.do-while.for.return.break 以及选择语句switch.然而,Java并不支持goto语句(该语句引起许多反对意见,但它 ...
- Ubuntu下查看APT安装的软件安装路径和版本
1.查询安装路径 dpkg -L 软件名 例如:dpkg -L gedit dpkg -L gedit /. /usr /usr/bin /usr/bin/gedit /usr/share /usr/ ...
- 一个简单的WebService服务
现在,网上提供的免费的webservice服务的网站: http://www.webxml.com.cn/ 从扩展名上看,是 .net构建的网站. 看看功能的实现效果: 需求:我们要远程调用手机号归属 ...
- nginxtomca负载均衡
Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 ...
- 剖析ASP.NET Core MVC(Part 1)- AddMvcCore(译)
原文:https://www.stevejgordon.co.uk/asp-net-core-mvc-anatomy-addmvccore发布于:2017年3月环境:ASP.NET Core 1.1 ...
- RenderMonkey 练习 第五天 【OpenGL NormalMapping】
1. 新建一个OpenGL 空effect; 2. 添加相关变量 右击Effect节点选择Add Variable->float->float / float3 添加镜面光强度.灯光位置和 ...
- 〔原创〕Ubuntu Linux Server 9.04 安装全程图解
关于Ubuntu Linux Server 9.04 版本的安装使用.先声明几点: 1. 整个安装过程,都是全英文的,而且,是文本模式,不像Desktop版本,有Livecd的图形化模式.2. 刚开始 ...
- css border-sizing 用法与理解
浏览器支持 IE Firefox Chrome Safari Opera 支持 支持 支持 支持 支持 Internet Explorer.Opera 以及 Chrome 支持 box-si ...
- java源码阅读Observable(观察者模式)
1类签名和简介 package java.util; public class Observable Observable是Java内置的观察者模式中的主题类(没错,是类不是接口),和其对应的观察者接 ...