<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        日期處理的js庫(迷你版)--自建js庫總結_時間日期

        來源:懂視網 責編:小采 時間:2020-11-27 21:01:25
        文檔

        日期處理的js庫(迷你版)--自建js庫總結_時間日期

        日期處理的js庫(迷你版)--自建js庫總結_時間日期:接口+繼承+代碼優化思想 先分享下我覺得一個很不錯的js編程小技巧,達到很大的代碼共用性! 因為很多js庫會在原生的對象上進行直接原型擴展,但這是很不好的習慣,不僅加重了每個新實例對象的內存消耗,而且容易造成污染性誤解(以為有這東西)!而這也是建j
        推薦度:
        導讀日期處理的js庫(迷你版)--自建js庫總結_時間日期:接口+繼承+代碼優化思想 先分享下我覺得一個很不錯的js編程小技巧,達到很大的代碼共用性! 因為很多js庫會在原生的對象上進行直接原型擴展,但這是很不好的習慣,不僅加重了每個新實例對象的內存消耗,而且容易造成污染性誤解(以為有這東西)!而這也是建j

        接口+繼承+代碼優化思想
        先分享下我覺得一個很不錯的js編程小技巧,達到很大的代碼共用性! 因為很多js庫會在原生的對象上進行直接原型擴展,但這是很不好的習慣,不僅加重了每個新實例對象的內存消耗,而且容易造成污染性誤解(以為有這東西)!而這也是建js庫一個準則:盡量少的原型擴展,特別是越根部的對象!

        js建庫準則
        js建庫準則(Dean Edwards在開發base2時候的一些體會)翻譯版:http://biaoge.me/2009/12/239 js建庫學習好地方:http://ejohn.org/blog/building-a-javascript-library/ 假如你有時間,再看一個建js庫超級前沿的文檔,包括css3,瀏覽器最新API(如querySelector) build-a-javascript-framework

        用繼承提高代碼共用性
        因為不在原生對象上進行擴展,所以需要一個對外的命名空間,而在這個對象下會有一些接口供外部調用,而為了提高本身js庫的健壯性,需要在最大程度減小對外接口(最理想的就是只保存用戶需要的接口)! 那么這里便有一個問題,我將它實例化吧:
        代碼如下:
        var namespace={
        IOfirst:function(){},
        IOsecond:function(){}
        }

        在對象namespace下有個東西需要給IOfirst跟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;
        //init interface for all functions(test successfully)
        var interfaces=["testLeap","disDayNum","todayBetween","getMonthByDay","getNextWeekByDay","getWeekByDay","newDate","compareDate"]
        var shift;
        do{
        shift=interfaces.shift()
        that.addIO(shift);
        funs[shift]=function(){};
        }while(interfaces.length>0)
        //set the common object and variable

        //for browers test
        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;
        else if(nav.indexOf("Chrome")>0) br.ch=true;

        //continue to set 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");
        },

        而可以看到有三部分:
        在 //set the common object and variable 那里我們可以寫我們的公用函數,變量,如判斷瀏覽器,加入類似后臺的sqlHelp 函數 之后便是初始化接口了:
        代碼如下:
        funs.newDate=function(){
        return formatDate(arguments[0][0])
        }
        funs.getWeekByDay=function(){
        return getWeekByDay(arguments[0][0]);
        }
        funs.getNextWeekByDay=function(){
        var speDate=formatDate(arguments[0][0]);
        speDate.setDate(speDate.getDate()+7);
        return getWeekByDay(speDate);
        }

        而且這樣還有一個好處,就是你的代碼不會給人家隨便的復制去用,因為接口的內部聯系性很大!例如上面的funs.getWeekByDay,funs.getNextWeekByDay公用了getWeekByDay()方法! 最后附上我的不成熟的js庫以及接口聲明,還望大牛幫忙改進下,萬分感謝
        代碼如下:
        /*
        //function:to compare two dates and return information "equal"/"more"/"less"
        //arguments num:2
        //arguments type: Date,Date
        //arguments declaration:1.the target object you need to compare(Subtrahend);2.the compare object(Minuend)
        //return data -- type: String ; three value: "more"(if target is larger),"equal"(if target is equal to compared object),"less"(if target is smaller)
        compareDate:function (objDate,comDate)
        {
        },
        //function:to format the string to Date ,and return
        //arguments num:1
        //arguments type: for this interface apply for overload , so String or Date is allowed
        //arguments declaration:if you pass String ,it should format to "YYYY-MM-DD" or "YYYY/MM/DD" or "YYYY:MM:DD" like "2008/10/12"
        //return date : type:Date;one value:the date you want after formatting
        newDate :function (str)
        {
        },
        //function:get the start date and end date of the week of the date you have passed and return the Json including {startDay,endDay}
        //arguments num:1
        //arguments type:for this interface apply for overload , so String or Date is allowed
        //arguments declaration:the day you want to get the first day and last day of in this weeek;if you pass String ,it should format to "YYYY-MM-DD" or "YYYY/MM/DD" or "YYYY:MM:DD" like "2008/10/12"
        //return data--type :Json ; one value:{startDay:"",endDay:""} ,you can get it by var.startDay(var is your custom variable)
        getWeekByDay :function (day)
        {
        },
        //function:get the start date and end date of next week of the date you have passed and return the Json including {startDay,endDay}
        //arguments num:1
        //arguments type:for this interface apply for overload , so String or Date is allowed
        //arguments declaration:the day you want to get the first day and last day of in this weeek;if you pass String ,it should format to "YYYY-MM-DD" or "YYYY/MM/DD" or "YYYY:MM:DD" like "2008/10/12"
        //return data--type :Json ; one value:{startDay:"",endDay:""} ,you can get it by var.startDay(var is your custom variable)
        getNextWeekByDay :function (day)
        {
        };
        //function:get the start date and end date of the month of the date you have passed and return the Json including {startDay,endDay}
        //arguments num:1
        //arguments type:Date
        //arguments declaration:the day you want to get the first day and last day of in this month
        //return data--type :Json ; one value:{startDay:"",endDay:""} ,you can get it by var.startDay(var is your custom variable)
        getMonthByDay :function (day)
        {
        },
        //function:to test if including today between the two dates you pass and return in boolean
        //arguments num:2
        //arguments type:Date,Date
        //arguments declaration:the procedure will test the larger and sort automatically ,so the order is no matter
        //return data-- type: boolean ; one value :true if today is between the two dates
        todayBetween :function (startDate,endDate)
        {
        },
        //function:to caculate the difference between two dates in days
        //arguments num:2
        //arguments type:Date,Date
        //arguments declaration:1.startDate(the one be reduced) 2.endDate(the one to reduce)
        //return data--type:Number ; one value:the different between these two dates
        disDayNum:function (startDate,endDate)
        {
        },
        //function:test the year of the date you have passed leap or not and return in boolean
        //arguments num:1
        //arguments type: for this interface apply for overload , so String or Date is allowed
        //arguments declaration:if you pass String ,it should format to "YYYY-MM-DD" or "YYYY/MM/DD" or "YYYY:MM:DD" like "2008/10/12"
        //return data -- type:boolean ;one value: true if it is leap year or false
        testLeap :function (date)
        {
        } */

        歡迎下載:Date$.js

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        日期處理的js庫(迷你版)--自建js庫總結_時間日期

        日期處理的js庫(迷你版)--自建js庫總結_時間日期:接口+繼承+代碼優化思想 先分享下我覺得一個很不錯的js編程小技巧,達到很大的代碼共用性! 因為很多js庫會在原生的對象上進行直接原型擴展,但這是很不好的習慣,不僅加重了每個新實例對象的內存消耗,而且容易造成污染性誤解(以為有這東西)!而這也是建j
        推薦度:
        標簽: 時間日期 日期 js
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲码一区二区三区| 久久国产亚洲观看| 成全高清在线观看免费| 9277手机在线视频观看免费| 国产成在线观看免费视频| 亚洲午夜无码AV毛片久久| 污网站在线观看免费| 亚洲免费黄色网址| 亚洲精品尤物yw在线影院| 亚洲精品国产成人99久久| 成人无码WWW免费视频| 亚洲Av熟妇高潮30p| 亚洲免费闲人蜜桃| 亚洲1234区乱码| 免费国产成人18在线观看| 亚洲国语精品自产拍在线观看| 日韩免费电影网址| 亚洲成人网在线播放| 亚洲国产免费综合| 亚洲国产精品久久久天堂| 久久国产精品成人片免费| 亚洲一区中文字幕| 免费又黄又爽的视频| 中国内地毛片免费高清| 亚洲国产天堂久久综合网站| 真人做人试看60分钟免费视频| 亚洲欧美国产精品专区久久| 黄+色+性+人免费| 亚洲国产成人手机在线观看| 亚洲人AV永久一区二区三区久久| av永久免费网站在线观看| 亚洲高清视频免费| 99在线免费观看视频| 亚洲va久久久久| 亚洲一区二区三区香蕉| kk4kk免费视频毛片| 一区二区三区亚洲| 国产高清在线免费视频| 久久成人免费大片| 在线观看国产一区亚洲bd| 亚洲AV电影院在线观看|