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. os.path.join() - 忽略绝对路径前的参数

    os.path.join()会忽略第一个绝对路径之前的参数! 示例: >>> import os >>> os.path.join('/home', 'mushro ...

  2. Hadoop fs 使用方法

    hdfs的基本命令 hdfs dfs -help    查看帮助 在HDFS的文件系统中,HDFS只支持绝对路径 1.-ls: 显示目录信息 hadoop fs -ls / 列出指定目录下的内容 2. ...

  3. jmeter接口测试(登录、注册)

    Jmeter 进行接口测试流程: Jmeter 的下载地址:http://jmeter.apache.org/download_jmeter.cgi 下面举例说明使用流程,有两种参数传递的方式,我们以 ...

  4. k8s系列---故障

    kubectl get namespace prom Terminating 45h namespace 出现Terminating 状态,一直删不掉 解决: 1:导出namespace的json文件 ...

  5. nginX 安装 启动

    选择源码安装  下载安装包  nginx-1.8.0.tar.gz   解压                     tar -zxvf  nginx-1.8.0.tar.gz    进入文件夹   ...

  6. [Linux]命令返回值以及错误对照表

    Linux执行完命令之后默认会有一个返回值 # ls app backupconfig.json Doc manage.py __pycache__ settings.py # echo $? 0 错 ...

  7. Docker Compose搭建Redis一主二从三哨兵高可用集群

    一.Docker Compose介绍 https://docs.docker.com/compose/ Docker官方的网站是这样介绍Docker Compose的: Compose是用于定义和运行 ...

  8. h5笔记(实战)

    1.margin:auto 水平居中只对block有效,对inline和inline-block都无效 2.text-align:center 内容居中对block和inline-block有效,对i ...

  9. np.vstack与np.hstack

    转自:https://zhuanlan.zhihu.com/p/82996332   留作备忘

  10. jni 文件切割合并

    最近学习c++,看到很多常用的例子,比如文件切割,切割后后缀可以自定义,别人就无法从表面的一个文件看出是什么,也无法查看到原文件信息,只有合并后才能识别这庐山真面目 实现也比较粗暴,首先在应用层定义好 ...