87,921
社区成员
发帖
与我相关
我的任务
分享
/*
* @author yourname
* @email
* @qq
* @lastdate
* 插件功能 描述,代码结构要求
*/
;(function ($) {
var pluginName = '', //定义插件名
//插件的参数默认值
defaults = {
};
//... 插件主体功能代码 ...
$.fn[ pluginName ] = function (options) {
var settings = $.extend({}, defaults, options);//将参数值合并到默认值
//主体代码开始
}
})(jQuery);
function packageFun() {
var li_length = $("#FirstPage li").length;//作为该类的私有变量,如果放在setinterval中,每次都要去查找,就没必要了
var cur_length = 0;
this.change = setInterval(function() {//凡是带有this的成员方法或属性都是可以在外部调用的,而var声明的则为私有变量
cur_length++;
if(cur_length == li_length) {
cur_length = 0;
}
show(cur_length);
}, 1000);
var show = function(length) {
$("#FirstPage li").eq(length - 1).fadeOut(1000); //将上一张图片隐藏
$("#FirstPage li").eq(length).fadeIn(1000); //将这张图片出现
}
}
var T = new packageFun();
console.log(T.change); //这里输出setinterval的ID
上面的写法还不是特别符合实际的情况,有种为了面向对象而面向对象的感觉,但起码看上去是这么一回事,要想写好封装,实际上你应该根据实际的需求来封装,比如你想做的是图片轮播,你应该要确定你这个图片轮播的对象应该具备哪些属性和方法,正如你用change来记录ID一样,你肯定希望能主动停止执行函数,那么你大致可以在里面写几个方法或属性:
属性:返回当前对象的setInterval的ID
方法:1 设置setInterval的循环执行的时间
2 结束轮播
3 开始轮播
所以我上面的写法你可以再进一步修改
function test()
{
this.name='test';
this.getname=function(){
console.log(this.name)
}
}
var T=new test();//创建一个实例化对象
console.log(T.a);//调用该对象的属性
T.getname();//调用该对象的方法