1、封装学习

/// <reference path="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js" />

//简单的函数封装
$.extend({
sayHello: function (name) {
$("body").html('Hello,' + (name ? name : 'Dude') + '!');
}
}) //使用$.fn方式 其中this = $('a'),代表jquery选择器选中的元素
$.fn.Test = function () {
return this.html("$.fn.zsw.Test");
} //使用$.fn方式,带参数
$.fn.ParasTest = function (options) {
var defaults = {
name: "zsw"
}; //$.extend 第一个参数代表合并到一个新的空对象上,以保护原始数据
var setOptions = $.extend({}, defaults, options); return this.html("$.fn.zsw.Test 参数:" + setOptions.name); }; /*
复杂点的
1、构造函数
2、方法
3、注入jquery
***************************************/
//创建构造函数
var InitName = function (ele, opt) {
this.$ele = ele,
this.defaults = {
name: "zsw"
},
this.options = $.extend({}, this.defaults, opt);
} //增加方法
InitName.prototype = {
AddHtml: function () {
return this.$ele.html(this.options.name);
}
} //注入
$.fn.MyName = function (options) {
var initName = new InitName(this, options);
return initName.AddHtml();
} //将插件内容包含在命名空间中,前面加分号是因为如果前面的内容没有加分号会影响插件
; (function () {
var InitName = function (ele, opt) {
this.$ele = ele,
this.defaults = {
name: "zsw02"
},
this.options = $.extend({}, this.defaults, opt);
} //增加方法
InitName.prototype = {
AddHtml: function () {
return this.$ele.html(this.options.name);
}
} //注入
$.fn.MyName02 = function (options) {
var initName = new InitName(this, options);
return initName.AddHtml();
}
})(); //将系统变量以参数的形式传入,可以稍微提升速度
; (function ($, window, docment, undefined) {
//注入
$.fn.MyName03 = function (options) {
var InitName = function (ele, opt) {
this.$ele = ele,
this.defaults = {
name: "zsw03"
},
this.options = $.extend({}, this.defaults, opt);
} //增加方法
InitName.prototype = {
AddHtml: function () {
return this.$ele.html(this.options.name);
}
} var initName = new InitName(this, options);
return initName.AddHtml();
}
})($, window, document) //匿名对象方式
; (function ($, window, docment, undefined) {
$.fn.MyName04 = function (options) {
var Name = {
Init: function (ele, opt) {
this.$ele = ele,
this.defaults = {
name: "zsw04"
},
this.options = $.extend({}, this.defaults, opt);
},
Addhtml: function () {
return this.$ele.html(this.options.name);
}
}
Name.Init(this, options); return Name.Addhtml();
}
})($, window, document)
//匿名函数封装2
; (function ($, window, docment, undefined) {
$.fn.Zsw = function (options) {
var t = this;
var Name = {
Init: function (ele, opt) {
this.$ele = ele,
this.defaults = {
name: "zsw05"
},
this.options = $.extend({}, this.defaults, opt);
},
Addhtml: function () {
return this.$ele.html(this.options.name);
},
ShowHtml: function () {
Name.Init(t, options);
Name.Addhtml();
}
}
return Name.ShowHtml();
};
})($, window, document) //调用
/$.sayHello();
    //$("body").Test();
    //$("body").ParasTest();
    //$("body").ParasTest({ name: "aaa" });
    //$("body").MyName();
    //$("body").MyName02();
    //$("body").MyName03();
    //$("body").MyName04();
    $("body").Zsw();

2、对象的封装——日历(没有任何功能,纯输出格式)

<script>
var Canledar = {
IsRunN: function (year) {
if (year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)) {
return true;
}
else {
return false;
}
},
GetWeek: function (date) {
var week = date.getDay();
return week;
},
GetMonthDay: function (date) {
var monthDay = 0;
switch (date.getMonth() + 1) {
case 1: monthDay = 31; break;
case 2:
if (Canledar.IsRunN(date.getFullYear())) { monthDay = 29; }
else { monthDay = 28; }
break;
case 3: monthDay = 31; break;
case 4: monthDay = 30; break;
case 5: monthDay = 31; break;
case 6: monthDay = 30; break;
case 7: monthDay = 31; break;
case 8: monthDay = 31; break;
case 9: monthDay = 30; break;
case 10: monthDay = 31; break;
case 11: monthDay = 30; break;
case 12: monthDay = 31; break;
}
return monthDay;
},
ToFormat: function (date) {
return new SimpleDateFormat(Canledar.Format).format(date)
},
Week: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
DateNote: ["年", "月", "日"],
FormatDate: "yyyy-MM-dd",
FormatTime: "HH:mm:ss",
CreateHtml: function (date, options) {
var opt = $.extend({},Canledar,options) var strDate = "<div><span><</span><em>" + date.getFullYear() + opt.DateNote[0] + (date.getMonth() + 1) + opt.DateNote[1] + date.getDate() + opt.DateNote[2] + "</em><span>></span></div>";
strDate += "<table>";
strDate += "<tr><th>" + opt.Week[0] + "</th><th>" + opt.Week[1] + "</th><th>" + opt.Week[2] + "</th><th>" + opt.Week[3] + "</th><th>" + opt.Week[4] + "</th><th>" + opt.Week[5] + "</th><th>" + opt.Week[6] + "</th></tr>";
strDate += "<tr>";
for (var i = 1; i <= Canledar.GetWeek(date) ; i++) {
strDate += "<td></td>";
} for (var i = 0 ; i < Canledar.GetMonthDay(date) ; i++) {
//alert((i + Canledar.GetWeek(date)) % 7)
if (((i + Canledar.GetWeek(date)) % 7) == 0) {
strDate += "</tr><tr>"
}
strDate += "<td>" + (i + 1) + "</td>";
} var lastDayWeek = Canledar.GetWeek(new Date(date, Canledar.GetMonthDay(date) * (1000 * 60 * 60 * 24)));
for (var i = 7; i > lastDayWeek ; i--) {
strDate += "<td></td>";
} strDate += "</tr>"; strDate += "</table>";
console.log(strDate);
return strDate;
}
}; $(function () {
$("#can").html(Canledar.CreateHtml(new Date(), {Week:["日","一","二","三","四","五","六"]}));
})
</script>

  

jquery的封装与对象学习的更多相关文章

  1. javascript 学习笔记之JQuery中的Deferred对象

    Deffered是Jquery中的一个非常重要的对象,从1.5版本之后,Jquery中的ajax操作都基于Deffered进行了重构,这个对象的处理模式就像其他Javascript框中的Promise ...

  2. jQuery的deferred对象学习

    #copy { background-color: lightgreen; padding: 15px; margin: 10px } 一.deferred对象简介 deferred对象是jquery ...

  3. jQuery事件与事件对象

    事件是脚本编程的灵魂,本篇来介绍jQuery中的事件处理及事件对象. 事件与事件对象 首先,我们来看一下经常使用的添加事件的方式: <input type="button" ...

  4. (转载)jQuery 1.6 源码学习(一)——core.js[1]之基本架构

    在网上下了一个jQuery 1.2.6的源码分析教程,看得似懂非懂,于是还是去github上下载源码,然后慢慢看源代码学习,首先来说说core.js这个核心文件吧. jQuery整体的基本架构说起来也 ...

  5. jQuery回调、递延对象总结(上篇)—— jQuery.Callbacks

    前言: 作为参数传递给另一个函数执行的函数我们称为回调函数,那么该回调又是否是异步的呢,何谓异步,如:作为事件处理器,或作为参数传递给 (setTimeout,setInterval)这样的异步函数, ...

  6. ajax请求原理及jquery $.ajax封装全解析

    .ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...

  7. jquery简单封装

    对Raphael画图标的一个jquery简单封装 公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封 ...

  8. 【jQuery】jquery插件封装

    扩展jQuery插件开发的基本知识,最佳做法和常见的陷阱. 入门 编写一个jQuery插件开始于给jQuery.fn加入​​新的功能属性,此处添加的对象属性的名称就是你插件的名称: jQuery.fn ...

  9. 基于jquery的插件turn.js学习笔记

    基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...

随机推荐

  1. 【人类观察所】"当代人"正经历的生活

    一."即时满足"的互联网 "轻微烦躁,偶尔自燃,当代生活多数时刻的心情基调." 如果你出生于上个世纪,应该能明白木心的<从前慢>里的 「从前的日色变 ...

  2. Mac设置Linux免密登陆

    利用公钥认证登录 1.创建共钥 输入下面的命令,一路回车 ssh-keygen -t rsa 2.复制公钥到ssh服务器 将上一步生成的id_rsa.pub公钥文件复制到目标服务器对应用户下的~/.s ...

  3. 使用gRPC-Web从浏览器调用.NET gRPC服务

    我很高兴宣布通过.NET对gRPC-Web进行实验性支持.gRPC-Web允许从基于浏览器的应用程序(例如JavaScript SPA或Blazor WebAssembly应用程序)调用gRPC. . ...

  4. zookeeper从入门到放弃

    第1章 Zookeeper入门 1.1 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 1.2 特点 1.3 数据结构 1.4 应用场景 提供的服务包括:统 ...

  5. docker 镜像save和转换

    docker save出来的tar包转成镜像 $ docker load < busybox.tar.gz 使用import转的镜像里面是空的,无法启动 报错如下Error: Error res ...

  6. 搭建ELK 集群 rpm安装

    上次是使用docker搭建的ELK,三个软件都跑在一台机器的一个docker中,这个就当是测试环境吧. 下面开始搭建正式环境下的ELK集群. 三台服务器 A:logstash B:Elasticsea ...

  7. Pycrypto与RSA密码技术

    密码与通信      密码技术是一门历史悠久的技术.信息传播离不开加密与解密.密码技术的用途主要源于两个方面,加密/解密和签名/验签.   pip install pycrypto RSA 密码算法与 ...

  8. springcloud vue.js 微服务 分布式 activiti工作流 前后分离 shiro权限 集成代码生成器

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...

  9. Javascript 基础学习(六)js 的对象

    定义 对象是JS中的引用数据类型.对象是一种复合数据类型,在对象中可以保存多个不同数据类型的属性.使用typeof检查一个对象时,会返回object. 分类 内置对象 由ES标准定义的对象,在任何ES ...

  10. MySQL 什么是事务?

    该文为< MySQL 实战 45 讲>的学习笔记,感谢查看,如有错误,欢迎指正 一.事务简介 事务就是为了保证一组数据库操作,要么全部成功,要么全部失败. 事务是在引擎层实现的,也就是说并 ...