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. mybatis缓存问题导致无法查询到数据

    今天查询记录时,发现重复查询结果时出现空记录的情况 查看控制台信息,只有红色框选部分有进行查询数据,而其他没有.然而上图可看出有两条数据是能展现出来的,故有可能是mybatis缓存命中的. 因此在ma ...

  2. Go语言实现:【剑指offer】两个链表的第一个公共结点

    该题目来源于牛客网<剑指offer>专题. 输入两个链表,找出它们的第一个公共结点. Go语言实现: //长度长的先走个长度差,然后ab一起比较后面结点 //长度一样,公共结点可能在首结点 ...

  3. const与vector的搭配

    有三种组合方式,分别为: vector<const int> vec; const vector<int> vec; const vector<const int> ...

  4. ELF文件之五——使用链接脚本-2个函数-data-bss

    main.c int enable; ; int main() { ; } int add() { ; } bss段在elf中虽然size是4,但并不占filesize,节头表如下图所示 程序头中,项 ...

  5. 2.【Spring Cloud Alibaba】实现负载均衡-Ribbon

    负载均衡的两种方式 如何实现负载均衡 目前已经实现让A总能找到B,如何实现负载均衡 负载均衡的两种方式 服务器端负载均衡 客户端负载均衡 使用Ribbo实现负载均衡 Ribbon是什么 ==Netfl ...

  6. Web渗透测试漏洞手册及修复建议

    Web渗透测试漏洞手册及修复建议 0x0 配置管理 0x01 HTTP方法测试 漏洞介绍: 目标服务器启用了不安全的传输方法,如PUT.DELETE等,这些方法表示可能在服务器上使用了 WebDAV, ...

  7. JavaScript——基础知识,开始我们的js编程之旅吧!

    JavaScript基础第01天 1. 编程语言 编程语言: 可以通过类似于人类语言的"语言"来控制计算机,让计算机为我们做事情,这样的语言就叫做编程语言(Programming ...

  8. Myeclipse maven项目转web项目

    右键点击项目,选择project facets,或者在properties选择,点“Convert to faceted from...” 勾选java和Dynamic Web Module 选项 接 ...

  9. Re:萌娘百科上的黑幕实现

    Re:萌娘百科上的黑幕 说明 本文所有的代码均来自萌娘百科.萌娘百科打钱! 第零段话(我想说的) 这方面不是我的专长,所以有的地方说的不对也请纠正! 我可不是萌娘百科的员工或者管理员或者收了钱 我只是 ...

  10. Linux btrfs文件系统

    btrfs,它名字挺多:B-tree fs;Butter fs;Better fs 开源协议是GPL,2007年由Oracle研发 核心特性: 多物理卷支持,btrfs可由多个物理卷组成:支持RAID ...