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

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

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        Javascript引用指針使用介紹_javascript技巧

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 21:05:18
        文檔

        Javascript引用指針使用介紹_javascript技巧

        Javascript引用指針使用介紹_javascript技巧:請(qǐng)嘗試完成下列完形填空: 代碼如下: /* 創(chuàng)建一個(gè)隊(duì)列,頭為head0,尾為tail0 */ function IntList(head0, tail0){ this.head = head0 0; this.tail = tail0 null; } /* 返回一個(gè)IntList包含數(shù)組中的所有數(shù) */ IntLi
        推薦度:
        導(dǎo)讀Javascript引用指針使用介紹_javascript技巧:請(qǐng)嘗試完成下列完形填空: 代碼如下: /* 創(chuàng)建一個(gè)隊(duì)列,頭為head0,尾為tail0 */ function IntList(head0, tail0){ this.head = head0 0; this.tail = tail0 null; } /* 返回一個(gè)IntList包含數(shù)組中的所有數(shù) */ IntLi

        請(qǐng)嘗試完成下列完形填空:
        代碼如下:
        /* 創(chuàng)建一個(gè)隊(duì)列,頭為head0,尾為tail0 */
        function IntList(head0, tail0){
        this.head = head0 || 0;
        this.tail = tail0 || null;
        }
        /* 返回一個(gè)IntList包含數(shù)組中的所有數(shù) */
        IntList.list = function(__args){
        var sentinel = new IntList(),
        len = __args.length,

        p = sentinel;
        for(var i = 0; i < len; i++){
        p.tail = new IntList(__args[i]);
        p = p.tail;
        }
        return sentinel.tail;
        };
        /* 返回該對(duì)象的字符串表示 */
        IntList.prototype.toString = function(){
        var temp = "";
        temp += "[";
        for(var L = this; L !== null; L = L.tail){
        temp = temp + " " + L.head;
        }
        temp += " ]";
        return temp;
        };

        /** 返回一個(gè)IntList,包含IntList A和IntList B,
        * 其中B的元素在A的后面。不能使用new關(guān)鍵字。
        */
        function dcatenate(A, B){
        /* 完成功能 */
        }

        /** 返回一個(gè)新的IntList,其長(zhǎng)度為len,
        * 以#start元素為開(kāi)頭(其中#0是第一個(gè)元素),
        * 不能改變L。
        */
        function sublist(L, start, len){
        /* 完成功能 */
        }

        這是一個(gè)用Javascript寫(xiě)的鏈表題。由于鏈表?yè)碛休^為復(fù)雜的引用操作,正好可以用來(lái)考察下對(duì)Javascript的引用的理解。附帶簡(jiǎn)單的測(cè)試用例:
        代碼如下:
        /* 測(cè)試dcatenate和sublist函數(shù)是否正確 */
        function test(){
        var A = IntList.list([4,6,7,3,8]),
        B = IntList.list([3,2,5,9]);
        dcatenate(A, B);
        if(A.toString() === "[ 4 6 7 3 8 3 2 5 9 ]"){
        alert("dcatenate函數(shù)正確。");
        }else{
        alert("dcatenate函數(shù)錯(cuò)誤。");
        }
        var L = IntList.list([3,4,5,2,6,8,1,9]),
        result = sublist(L, 3, 3);
        if(result.toString() === "[ 2 6 8 ]"){
        alert("sublist函數(shù)正確。");
        }else{
        alert("sublist函數(shù)正確。");
        }
        }

        Javascript引用?

        實(shí)際上,在對(duì)變量賦予引用類型實(shí)例時(shí),變量保存的是該實(shí)例的引用:

          var temp = new Object();

        這種表現(xiàn)非常切合它的名字,引用類型,其實(shí)例當(dāng)然是來(lái)引用的。

        而當(dāng)將該變量再付給另一個(gè)變量的時(shí)候,實(shí)際上只是進(jìn)行了對(duì)引用的復(fù)制操作:

          var temp2 = temp;

        所以雖然從定義式來(lái)看:temp2 = temp,但他們并沒(méi)有直接聯(lián)系,例如修改了temp的引用:

        代碼如下:
        var temp = {
        name: "temp"
        };
        var temp2 = temp;
        temp = {
        name: "not temp2"
        };
        temp === temp2; //false

        當(dāng)然,如果我們修改的只是指針指向的實(shí)例本身,那么temp2依然等于temp:
        代碼如下:
        var temp = {
        name: "temp"
        };
        var temp2 = temp;
        temp.name = "also temp2";
        temp === temp2; //true

        IntList是什么東東?

        我們來(lái)分析一下下圖:

          創(chuàng)建兩個(gè)空的變量,所以右圖中L和Q是空的。創(chuàng)建一個(gè)新的IntList其頭部為3,尾部為空,將L引用的值賦給Q,所以L和Q都指向這個(gè)新的IntList。Q指向一個(gè)新創(chuàng)建的IntList其頭部為42,尾部為空,將Q的指針賦給L.tail,這樣兩個(gè)IntList被套嵌起來(lái)。

        可見(jiàn)IntList是個(gè)通過(guò)指針達(dá)到多重套嵌的數(shù)據(jù)結(jié)構(gòu),被稱為鏈表(Linked List)。

        1.創(chuàng)建兩個(gè)空的變量,所以右圖中L和Q是空的。
        2.創(chuàng)建一個(gè)新的IntList其頭部為3,尾部為空,將L引用的值賦給Q,所以L和Q都指向這個(gè)新的IntList。
        3.Q指向一個(gè)新創(chuàng)建的IntList其頭部為42,尾部為空,將Q的指針賦給L.tail,這樣兩個(gè)IntList被套嵌起來(lái)。
        可見(jiàn)IntList是個(gè)通過(guò)指針達(dá)到多重套嵌的數(shù)據(jù)結(jié)構(gòu),被稱為鏈表(Linked List)。

        IntList合并

        我們只需要將其中一個(gè)的尾部指向另一個(gè)就行了。這樣這兩個(gè)IntList就連接起來(lái)了:

        代碼如下:
        /** 返回一個(gè)IntList,包含IntList A和IntList B,
        * 其中B的元素在A的后面。不能使用new關(guān)鍵字。
        */
        function dcatenate(A, B){
        var p;
        for(p = A; p != null; p = p.tail){
        if(p.tail === null){
        p.tail = B;
        break;
        }
        }
        return A
        }

        IntList截取
        由于題目要求不能改變?cè)璉ntList,所以我們只能從原IntList取出數(shù)據(jù)再重建一個(gè)新的數(shù)據(jù)。
        代碼如下:
        /** 返回一個(gè)新的IntList,其長(zhǎng)度為len,
        * 以#start元素為開(kāi)頭(其中#0是第一個(gè)元素),
        * 不能改變L。
        */
        function sublist(L, start, len){
        var K,
        P,
        J;
        var i = 0,
        end = start + len;
        for(P = L; i <= end; P = P.tail, i++){
        if(i < start){
        continue;
        }else if(i === start){
        K = new IntList(P.head);
        J = K;
        }else if(i > start && i < end){
        J.tail = new IntList(P.head);
        J = J.tail;
        }else if(i >= end){
        break;
        }
        }
        return K;
        }

        思考題
        1.函數(shù)傳參數(shù)的時(shí)候是怎么傳的?例如下面代碼的引用過(guò)程是怎樣的?
        代碼如下:
        var obj = {
        name: "anything"
        };
        function getName(__obj){
        return __obj.name;
        }
        var name = getName(obj);

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Javascript引用指針使用介紹_javascript技巧

        Javascript引用指針使用介紹_javascript技巧:請(qǐng)嘗試完成下列完形填空: 代碼如下: /* 創(chuàng)建一個(gè)隊(duì)列,頭為head0,尾為tail0 */ function IntList(head0, tail0){ this.head = head0 0; this.tail = tail0 null; } /* 返回一個(gè)IntList包含數(shù)組中的所有數(shù) */ IntLi
        推薦度:
        標(biāo)簽: javascript 引用 指針
        • 熱門(mén)焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門(mén)推薦

        專題
        Top
        主站蜘蛛池模板: 永久免费AV无码网站在线观看| 中文字幕在线免费观看| 国产成人免费一区二区三区| 激情五月亚洲色图| 无码国产精品久久一区免费| 亚洲一区二区三区在线| 91精品国产亚洲爽啪在线观看| 野花香高清在线观看视频播放免费 | 国产精品久久久久久久久久免费| 亚洲伦理一二三四| 蜜桃视频在线观看免费网址入口| 亚洲精品美女网站| 亚洲高清最新av网站| 亚洲国产成人久久| 国产免费av片在线看| 亚洲AV成人精品一区二区三区| 亚洲?v女人的天堂在线观看| 亚洲精品视频在线免费| 三级毛片在线免费观看| 国产一区二区三区免费看| 尤物视频在线免费观看| 亚洲日韩精品无码专区网址| 67194成手机免费观看| 最新亚洲精品国偷自产在线| 亚洲av再在线观看| 可以免费观看的国产视频| 亚洲人成777在线播放| 免费观看的毛片手机视频| 成人免费视频一区二区| 亚洲AV无码成人精品区在线观看 | 天天天欲色欲色WWW免费| 亚洲精品欧洲精品| 永久免费av无码网站大全| 久久毛片免费看一区二区三区| 91天堂素人精品系列全集亚洲| 性盈盈影院免费视频观看在线一区| 一级做a爱过程免费视| 亚洲国产成人精品电影| 亚洲成AV人在线观看网址| **毛片免费观看久久精品| 国产精品久久久久久亚洲小说 |