首先,对象是什么?在编程语言中有一种万物皆对象,即一切事物都可以视为对象。按照JAVA的面向对象的理念,对象有属性和行为(即方法)。
---本例是:由于一个系统会出现很多以某某时间到某某时间的查询,且有时候要从后台取时间到前台。代码的重用行太高,所以采用对象封装让全系统调用
那么js怎么编码才能实现面向对象呢?
var ltx={
formatDate:null, //属性
//第一个参数为后台取出来的startTime
//第二个参数为界面上要设置的值对应的id
initTime:function(start,startTimeVar,end,endTimeVar,day){
if(start==null || start==""){
$('#'+startTimeVar).datetimebox('setValue',toDDMMMYYYY(subtracteDate(new Date(),day)));
}else{
$('#'+startTimeVar).datetimebox('setValue',start);
}
if(end==null || end==""){
$('#'+endTimeVar).datetimebox('setValue',toDDMMMYYYY(new Date()));
}else{
$('#'+endTimeVar).datetimebox('setValue',end);
}
//方法
function subtracteDate(dd,dadd){
var a = new Date(dd);
a = a.valueOf();
a = a - dadd * 24 * 60 * 60 * 1000;
a = new Date(a);
return a;
}
function toDDMMMYYYY(date){
var d = new Date(date.getTime());
var dd = d.getDate() < 10 ? "0" + d.getDate() : d.getDate().toString();
var mmm = d.getMonth() +1 <10 ? "0" + (d.getMonth()+1) : (d.getMonth()+1).toString();
var yyyy = d.getFullYear().toString();
var HH=d.getHours() <10 ? "0" + d.getHours() : d.getHours().toString();
var mm=d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes().toString();
var ss=d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds().toString();
return yyyy+"-"+mmm +"-"+dd + " "+HH+":"+mm+":"+ss;
}
}
};
上面的代码块中,ltx视为一个对象,而formatDate是个属性,initTime()是其中的一个方法。我们看到里面方法调用方法。且在initTime()的方法书写方式和subtracteDate、toDDMMMYYYY都不一样。怎么调用呢?
很简单,在页面加载时,直接类名.方法(),传入参数
$(function() {
//初始化时间
ltx.initTime("","startTimehntview","","endTimehntview",30);
});
那么,我是否可以将subtracteDate、toDDMMMYYYY的方法和init方法写成平级方法呢,这样在initTime()中调用时我们使用类名.方法呢?
var ltx={
formatDate:null, //属性
//第一个参数为后台取出来的startTime
//第二个参数为界面上要设置的值对应的id
initTime:function(start,startTimeVar,end,endTimeVar,day){
if(start==null || start==""){
$('#'+startTimeVar).datetimebox('setValue',ltx.toDDMMMYYYY(ltx.subtracteDate(new Date(),day)));
}else{
$('#'+startTimeVar).datetimebox('setValue',start);
}
if(end==null || end==""){
$('#'+endTimeVar).datetimebox('setValue',ltx.toDDMMMYYYY(new Date()));
}else{
$('#'+endTimeVar).datetimebox('setValue',end);
}
},
subtracteDate:function(dd,dadd){
var a = new Date(dd);
a = a.valueOf();
a = a - dadd * 24 * 60 * 60 * 1000;
a = new Date(a);
return a;
},
toDDMMMYYYY:function(date){
var d = new Date(date.getTime());
var dd = d.getDate() < 10 ? "0" + d.getDate() : d.getDate().toString();
var mmm = d.getMonth() +1 <10 ? "0" + (d.getMonth()+1) : (d.getMonth()+1).toString();
var yyyy = d.getFullYear().toString();
var HH=d.getHours() <10 ? "0" + d.getHours() : d.getHours().toString();
var mm=d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes().toString();
var ss=d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds().toString();
return yyyy+"-"+mmm +"-"+dd + " "+HH+":"+mm+":"+ss;
}
};
调用还是一样。