<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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        模仿JQuery.extend函數擴展自己對象的js代碼_javascript技巧

        來源:懂視網 責編:小采 時間:2020-11-27 20:46:06
        文檔

        模仿JQuery.extend函數擴展自己對象的js代碼_javascript技巧

        模仿JQuery.extend函數擴展自己對象的js代碼_javascript技巧:但在寫的過程中發現,如果要在之前寫好的對象中添加新的靜態方法或實例方法,要修改原有的對象結構,于是查看了jquery了extend方法,果然extend方法支持了jq的半邊天,拿來主義,給自己的對象做擴張用。下面進入正題: 假如有以下一個對象 代碼如下: v
        推薦度:
        導讀模仿JQuery.extend函數擴展自己對象的js代碼_javascript技巧:但在寫的過程中發現,如果要在之前寫好的對象中添加新的靜態方法或實例方法,要修改原有的對象結構,于是查看了jquery了extend方法,果然extend方法支持了jq的半邊天,拿來主義,給自己的對象做擴張用。下面進入正題: 假如有以下一個對象 代碼如下: v

        但在寫的過程中發現,如果要在之前寫好的對象中添加新的靜態方法或實例方法,要修改原有的對象結構,于是查看了jquery了extend方法,果然extend方法支持了jq的半邊天,拿來主義,給自己的對象做擴張用。

        下面進入正題:
        假如有以下一個對象
        代碼如下:
        var MyMath = {
        //加法
        Add: function(a, b){
        return a + b;
        },
        //減法
        Sub: function(a, b){
        return a - b;
        }
        }

        對象名MyMath,有兩個靜態方法Add和Sub,正常調用:

        代碼如下:
        alert(MyMath.Add(3, 5)) //結果8

        好,現在如果現在MyMath增加兩個靜態方法(乘法、除法)怎么辦,并且不要修改之前寫好的對象,以前我們可以這么做:
        代碼如下:
        //新加一靜態方法:Mul乘法
        MyMath["Mul"] = function(a, b){
        return a * b;
        }
        //新加一靜態方法:Div除法
        MyMath["Div"] = function(a, b){
        return a / b;
        }

        這樣,我們給MyMath添加兩個方法:Mul和Div。正常調用:
        代碼如下:
        alert(MyMath.Add(3, 5)) //結果8
        alert(MyMath.Mul(3, 5)) //結果15

        但是,剛才增加方法的寫法有點笨拙,每增加一個方法都要寫一次對象名(MyMath),能不能想之前我們創建對象的時候那樣,通過Json的結構去聲明一個對象呢?
        答案當然是可以了,通過模擬JQuery.extend函數,輕松做到。以下提取JQuery.extend函數并修改了函數名:
        代碼如下:
        MyMath.extend = function(){
        // copy reference to target object
        var target = arguments[0] ||
        {}, i = 1, length = arguments.length, deep = false, options;
        // Handle a deep copy situation
        if (typeof target === "boolean") {
        deep = target;
        target = arguments[1] ||
        {};
        // skip the boolean and the target
        i = 2;
        }
        // Handle case when target is a string or something (possible in deep copy)
        if (typeof target !== "object" && !jQuery.isFunction(target))
        target = {};
        // extend jQuery itself if only one argument is passed
        if (length == i) {
        target = this;
        --i;
        }
        for (; i < length; i++)
        // Only deal with non-null/undefined values
        if ((options = arguments[i]) != null)
        // Extend the base object
        for (var name in options) {
        var src = target[name], copy = options[name];
        // Prevent never-ending loop
        if (target === copy)
        continue;
        // Recurse if we're merging object values
        if (deep && copy && typeof copy === "object" && !copy.nodeType)
        target[name] = jQuery.extend(deep, // Never move original objects, clone them
        src || (copy.length != null ? [] : {}), copy);
        // Don't bring in undefined values
        else
        if (copy !== undefined)
        target[name] = copy;
        }
        // Return the modified object
        return target;
        };

        現在我們通過這個extend方法來增加剛才我們的方法(乘法、除法):
        代碼如下:
        MyMath.extend({
        Mul: function(a, b){
        return a * b;
        },
        Div: function(a, b){
        return a / b;
        }
        });

        這樣的結構更加一目了然。
        轉載請注上來自:http://www.cnblogs.com/wbkt2t

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

        文檔

        模仿JQuery.extend函數擴展自己對象的js代碼_javascript技巧

        模仿JQuery.extend函數擴展自己對象的js代碼_javascript技巧:但在寫的過程中發現,如果要在之前寫好的對象中添加新的靜態方法或實例方法,要修改原有的對象結構,于是查看了jquery了extend方法,果然extend方法支持了jq的半邊天,拿來主義,給自己的對象做擴張用。下面進入正題: 假如有以下一個對象 代碼如下: v
        推薦度:
        標簽: js 模仿 extend
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 777成影片免费观看| a视频在线观看免费| 精品久久久久久久久免费影院| 久久精品亚洲日本佐佐木明希| 亚洲精品偷拍视频免费观看| 亚洲精品第一国产综合精品99 | 亚洲午夜日韩高清一区| 自拍偷自拍亚洲精品偷一| 国产成人免费永久播放视频平台| 亚洲国产精华液2020| 国产成人精品123区免费视频| 色偷偷尼玛图亚洲综合| 免费精品国产自产拍观看| 美女裸体无遮挡免费视频网站| 一本久到久久亚洲综合| 九九九国产精品成人免费视频| 精品亚洲成α人无码成α在线观看| WWW国产成人免费观看视频| 亚洲色无码专区在线观看| 亚洲免费在线播放| 亚洲国产精品一区二区久| 成在线人永久免费视频播放| 四虎国产精品成人免费久久| 日本亚洲成高清一区二区三区| 2019中文字幕在线电影免费 | 亚洲精品中文字幕无乱码| 成年女人毛片免费播放视频m| 亚洲AV成人精品日韩一区| 亚洲精品无码激情AV| 日本免费久久久久久久网站| 亚洲人成伊人成综合网久久| 免费特级黄毛片在线成人观看 | 亚洲精品无码成人片在线观看 | 亚洲AV无码乱码麻豆精品国产| 韩国18福利视频免费观看| 一区免费在线观看| 亚洲精品综合一二三区在线| 欧洲黑大粗无码免费| fc2免费人成在线| 亚洲av无码久久忘忧草| 亚洲高清视频一视频二视频三|