需求 : _xx.page.to();_xx.page.init();需要全局执行,为了少用全局变量我的函数结构如下:
_xx.page=function(){
//页面跳转控制
var _self=_xx.page;
var $pNow=null,$pLast=null,z=2;
_self.to=function(toPage){
$pLast=$pNow;
$pNow=toPage;
if($pNow.attr('id')==$pLast.attr('id')) return;
z++;
$pNow.css('zIndex',z).show();
}
_self.init=function(toPage){
$pLast=$pNow;
$pNow=toPage;
$pNow.css('zIndex',z).show();
setTimeout(function(){
$pNow.addClass('page-on');
},50);
}
$('.pageBox').on('webkitAnimationEnd',function(){
$(this).addClass('page-on');
$($pLast).hide().removeClass('page-on');
});
}
_xx.page();//创建page对象
_xx.page.init($('#p1'));
我这样写的好处是 可以直接在_xx.page上面调用 init 和 to 方法,还可以通过调用_xx.page()来控制内部方法的创建时机
如果我把_xx.page内部var _self=_xx.page;替换成var _self={};然后在_xx.page 里面return _self;就应该这样调用:
_xx.aa=_xx.page();
_xx.aa.init($('#p1'));
这样做会给_xx命名空间添加aa属性
如果我把_xx.page内部var _self=_xx.page;替换成var _self=this;然后在_xx.page ;就应该这样调用:
_xx.aa=new _xx.page();
_xx.aa.init($('#p1'));
这样做也会给_xx命名空间添加aa属性
写这种小组件大家认为应该搭建怎样的结构为好?
不太清楚为何要控制内部方法的创建时机,闭包看上去是最简单的解决方法了。