>  기사  >  웹 프론트엔드  >  날짜 처리 js 라이브러리(미니 버전)-자체 구축 js 라이브러리 요약_시간 및 날짜

날짜 처리 js 라이브러리(미니 버전)-자체 구축 js 라이브러리 요약_시간 및 날짜

WBOY
WBOY원래의
2016-05-16 17:59:10997검색

인터페이스 상속 코드 최적화 생각
먼저 훌륭한 코드 공통성을 달성하기 위한 매우 좋은 js 프로그래밍 팁이라고 생각하는 것을 공유하겠습니다! 많은 js 라이브러리가 기본 객체에 대해 직접 프로토타입 확장을 수행하기 때문에 이는 매우 나쁜 습관입니다. 이는 각각의 새로운 인스턴스 객체의 메모리 소비를 증가시킬 뿐만 아니라 오염된 오해를 쉽게 유발합니다(그런 것이 있다고 생각)! 그리고 이는 또한 js 라이브러리를 구축하기 위한 지침이기도 합니다. 특히 루트 수준 객체의 경우 프로토타입 확장을 가능한 한 적게 하는 것입니다!

JS 데이터베이스 구축 지침
JS 데이터베이스 구축 지침(Dean Edwards의 base2 개발 경험) 번역본: http://biaoge.me/2009/12/239 좋은 곳 js 라이브러리 구축에 대해 알아보려면: http://ejohn.org/blog/building-a-javascript-library/ 시간이 있으면 CSS3를 포함하여 js 라이브러리 구축에 대한 최첨단 문서를 살펴보십시오. 최신 브라우저 API(예: querySelector) build-a-javascript-framework

상속을 사용하여 코드 공통성 향상
네이티브 객체에서 확장되지 않으므로 외부 네임스페이스 필요하며, 이 객체에는 외부 호출을 위한 인터페이스가 일부 있을 것이며, js 라이브러리 자체의 견고성을 향상시키기 위해서는 외부 인터페이스를 최소화해야 합니다. (이상적인 것은 사용자에게 필요한 인터페이스만 저장하는 것입니다.) ! 여기에 문제가 있습니다. 인스턴스화하겠습니다.

코드 복사 코드는 다음과 같습니다.

var 네임스페이스={
IOfirst:function(){},
IOsecond:function(){}
}

객체 네임스페이스 아래에 다음과 같은 항목이 있습니다. 이 인터페이스를 노출하지 않고 IOfirst Shared with IOsecond에 제공해야 합니다! 상속을 통해 모든 외부 인터페이스를 상위 인터페이스로 래핑한 다음 init 메소드에서 값을 균일하게 할당합니다. init 메소드에서는 클로저의 역할로 인해 코드 공통성이 달성됩니다! 구체적인 방법:

외부 인터페이스를 동적으로 추가하여 코드 유연성 향상
코드 복사 코드는 다음과 같습니다.

addIO:function(str){
var arrs = str.split("."),
o = this
for (i=(arrs[0] == " Date$") ? 1 : 0; i0)
{
var data=arrs[0]
o[arrs[i]]=o[arrs[i]] ||function( ){return this.parIO.apply(null,[data,arguments])};
o=o[arrs[i]]
}
}
InitFuns:function(){
var that=this;
var funs=this.actionFun;
//모든 기능에 대한 인터페이스 초기화(테스트 성공)
var 인터페이스=["testLeap","disDayNum","todayBetween", "getMonthByDay" ,"getNextWeekByDay","getWeekByDay","newDate","compareDate"]
var shift
do{
shift=interfaces.shift()
that.addIO(shift) ;
funs[shift]=function(){};
}while(interfaces.length>0)
//공통 객체 및 변수 설정

//브라우저 테스트
var br={
ie:false,//IE6~8
ff:false,//Firefox
ch:false//Chrome
}
var nav=navigator.userAgent ;
if(!-[1,]) br.ie=true;
else if(nav.indexOf("Firefox")>0) br.ff=true; .indexOf( "Chrome")>0) br.ch=true;

//IO 설정 계속

}


초기화된 인터페이스를 콘솔에 출력:


그래서 모든 외부 인터페이스가 parIO에 바인딩되어 있어 인터페이스가 많을 때 코드를 많이 절약할 수 있습니다! 내부 및 외부 허브 유지 관리의 핵심인 ParIO는 하위 인터페이스 검색, 매개변수 전달 및 반환 初始化接口完成

parIO:function(){
if(Date$.actionFun[arguments[0]])
{
var customFun=Date $.actionFun[arguments[0]]
return customFun.apply(null,[arguments[1]])
}
else
console&&cosnole.log("empty"); },


세 부분으로 구성되어 있음을 알 수 있습니다.
//공통 개체 및 변수 설정에서 브라우저 판단과 같은 공용 함수 및 변수를 작성할 수 있습니다. , 비슷한 배경 sqlHelp 함수를 추가한 다음 초기화 인터페이스를 추가합니다. 이제:


코드를 복사합니다. 코드는 다음과 같습니다. funs.newDate=function(){
return formatDate(arguments[0][0])
}
funs.getWeekByDay=function(){
return getWeekByDay( 인수[0][0]);
}
funs .getNextWeekByDay=function(){
var speDate=formatDate(arguments[0][0])
speDate.setDate(speDate. getDate() 7);
return getWeekByDay(speDate)


그리고 또 다른 장점은 인터페이스의 내부 연결이 매우 강력하기 때문에 다른 사람이 코드를 복사하거나 사용하지 않는다는 것입니다! 예를 들어, funs.getWeekByDay 및 funs.getNextWeekByDay는 위의 getWeekByDay() 메소드를 공유합니다! 마지막으로, Daniel이 이를 개선하는 데 도움이 되기를 바랍니다.
코드 복사 코드는 다음과 같습니다.

/*
//함수: 두 날짜를 비교하고 "같음"/"더"/"적음" 정보를 반환합니다.
//인수 num :2
//인수 유형: 날짜,날짜
//인수 선언:1.비교해야 할 대상 개체(Subtrahend);2.비교 개체(Minuend)
//데이터 반환 - - 유형: 문자열 ; 세 가지 값: "more"(대상이 더 큰 경우), "equal"(대상이 비교 대상과 같은 경우), "less"(대상이 더 작은 경우)
compareDate:function (objDate,comDate )
{
},
//function: 문자열을 Date 로 형식화하고
//arguments num:1
//arguments 유형을 반환합니다. 이 인터페이스의 경우 오버로드를 적용합니다. 따라서 문자열 또는 날짜가 허용됩니다.
//인수 선언: 문자열을 전달하는 경우 "2008/과 같이 "YYYY-MM-DD" 또는 "YYYY/MM/DD" 또는 "YYYY:MM:DD" 형식이어야 합니다. 10/12"
//반환 날짜 : 유형:날짜;하나 값:형식 지정 후 원하는 날짜
newDate :function (str)
{
},
//함수: 지난 날짜의 주의 시작 날짜와 종료 날짜를 가져오고 {startDay,endDay}
//arguments num:1
//arguments type:overload에 대한 이 인터페이스 적용을 포함하여 Json을 반환합니다. 따라서 문자열 또는 날짜가 허용됩니다.
//인수 선언: 이번 주의 첫 번째 날과 마지막 날을 가져오려는 날짜, 문자열을 전달하는 경우 "YYYY-MM-DD" 또는 "YYYY" 형식이어야 합니다. /MM/DD " 또는 "YYYY:MM:DD" like "2008/10/12"
//반환 데이터--유형 :Json ; 하나의 값:{startDay:"",endDay:""} ,당신 var.startDay로 가져올 수 있습니다(var는 사용자 정의 변수입니다)
getWeekByDay :function (day)
{
},
//function:다음 주의 시작 날짜와 종료 날짜를 가져옵니다. 전달한 날짜를 포함하여 Json을 반환합니다. {startDay,endDay}
//인수 숫자:1
//인수 유형: 이 인터페이스의 경우 오버로드가 적용되므로 문자열 또는 날짜가 허용됩니다
// 인수 선언: 이번 주의 첫날과 마지막 날을 가져오려는 날짜입니다. String을 전달하는 경우 "YYYY-MM-DD" 또는 "YYYY/MM/DD" 또는 "YYYY:MM: 형식이어야 합니다. DD" like " 2008/10/12"
//return data--type:Json; 하나의 값:{startDay:"",endDay:""} , var.startDay(var는 맞춤 변수)
getNextWeekByDay :function (day)
{
}
//function:지난 날짜의 시작 날짜와 종료 날짜를 가져오고 {를 포함하여 Json을 반환합니다. startDay,endDay}
//인수 번호:1
//인수 유형:날짜
//인수 선언: 이번 달의 첫 번째 날과 마지막 날을 구하려는 날
/ /return data- -type :Json ; 하나의 값:{startDay:"",endDay:""} , var.startDay로 가져올 수 있습니다(var는 사용자 정의 변수입니다)
getMonthByDay :function (day)
{
},
//function: 전달한 두 날짜 사이에 오늘이 포함되는지 테스트하고 부울로 반환합니다
//arguments num:2
//arguments type:Date,Date
// 인수 선언: 프로시저는 더 큰 것을 테스트하고 자동으로 정렬하므로 순서는 중요하지 않습니다.
//데이터 반환-- 유형: 부울 ; 하나의 값 :오늘이 두 날짜 사이에 있으면 true
todayBetween :function( startDate,endDate)
{
},
//function: 두 날짜 간의 차이를 일 단위로 계산합니다
//인수 번호:2
//인수 유형: Date,Date
//인수 선언:1.startDate(줄일 항목) 2.endDate(줄일 항목)
//return data--type:Number one value: 이 둘 사이의 차이점; 날짜
disDayNum:function (startDate,endDate)
{
},
//function: 도약 여부를 통과한 날짜의 연도를 테스트하고 부울
//인수로 반환합니다. num:1
//인수 유형: 이 인터페이스의 경우 오버로드가 적용되므로 문자열 또는 날짜가 허용됩니다.
//인수 선언: 문자열을 전달하는 경우 "YYYY-MM-DD" 또는 "로 형식화해야 합니다. YYYY/MM/ DD" 또는 "YYYY:MM:DD" like "2008/10/12"
//return data -- type:boolean ;하나의 값: 윤년이거나 false인 경우 true
testLeap :function (date )
{
} */

다운로드를 환영합니다: Date$.js
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.