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

        在Javascript類中使用setTimeout_javascript技巧

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

        在Javascript類中使用setTimeout_javascript技巧

        在Javascript類中使用setTimeout_javascript技巧:最近遇到了一道 Javascript 考題,內容如下: 嘗試實現注釋部分的 Javascript 代碼,可在其他任何地方添加更多 代碼(如不能實現,說明一下不能實現的原因): var Obj = function(msg){ this.msg = msg; this.shout = funct
        推薦度:
        導讀在Javascript類中使用setTimeout_javascript技巧:最近遇到了一道 Javascript 考題,內容如下: 嘗試實現注釋部分的 Javascript 代碼,可在其他任何地方添加更多 代碼(如不能實現,說明一下不能實現的原因): var Obj = function(msg){ this.msg = msg; this.shout = funct

        最近遇到了一道 Javascript 考題,內容如下:

        嘗試實現注釋部分的 Javascript 代碼,可在其他任何地方添加更多
        代碼(如不能實現,說明一下不能實現的原因):

        var Obj = function(msg){
        this.msg = msg;
        this.shout = function(){
        alert(this.msg);
        }

        this.waitAndShout = function(){
        // 隔五秒鐘后執行上面的 shout 方法
        }
        }

        var testObj = new Obj("Hello,World!");
        testObj.shout();坦白的說,之前我并沒有在 Javascript 類中使用 setTimeout/setInterval 的經驗,所以開始就很草率的認為這是無法實現的。但是經過深思熟慮以后發現是可以實現的。退一步說,隔五秒執行某段語句是非常容易實現的。比如不考慮別的因素,題目中的函數是可以這樣寫:

        this.waitAndShout = function(){
        setTimeout('this.shout()', 5000);
        }在運行以后,誰都會意識到 this 這個變量是無法找到的。但是這是為什么呢,很快就可以意識到,其實 setTimeout/setInterval 是 window 對象的一個方法,所以也可以寫成 window.setTimeout/window.setInterval,那么上述的 this.shout() 就非常可以容易理解為什么不能執行了,因為它實際上調用的是 window.shout() 。

        知道了原因以后解決起來就非常的容易了,只要將對象綁定到 window 對象下就可以(我對 Javascript 有趣的對象機制感到興奮)。那么,上述的函數再做一個小的修改:

        this.waitAndShout = function() {
        window.Obj = this;
        setTimeout('Obj.shout()', 5000);
        }這樣就可以了。實際上

        setTimeout('Obj.shout()', 5000);等價于

        window.setTimeout('window.Obj.shout()', 5000);另外,之前我也想到將對象保存為數組,然后引用調用,代碼如下:

        function ObjectClass (property) {
        this.property = property;
        this.id = ObjectClass.cnt;
        ObjectClass.objects[ObjectClass.cnt++] = this;
        this.method = ObjectClass_method;
        }

        ObjectClass.cnt = 0;
        ObjectClass.objects = new Array();

        function ObjectClass_method () {
        setTimeout('ObjectClass.objects[' + this.id + '].method();', 5000);
        }

        var obj1 = new ObjectClass('feelinglucky');
        obj1.method();不過個人感覺還是上述第一種方法清晰得多。

        后記,Javascript 看來的確還是很多需要謹慎對待的地方,尤其是對象機制。就猶如我之前所說的,Javascript 并不比其他語言要復雜,但是它也沒有你想象中的簡單。

        PS:完成這道題目以后, Google 發現其他的兄弟早已經解決了此類的問題,比如這里還有這里,可以對比參考一下。


        --------------------------------------------------------------------------------

        更新,感謝 Sheneyan 兄弟的提醒,還有另外的一個辦法就是通過 Closure(閉包) 來實現,代碼如下:

        var Obj = function(msg){
        this.msg = msg;
        this.shout = function() {
        alert(this.msg);
        this.waitAndShout();
        }

        var _self = this;
        this.waitAndShout = function() {
        setTimeout(function(){_self.shout()}, 5000);
        }
        }

        var testObj = new Obj("Hello,World!");
        testObj.shout();看來這道題已經不能再害人了 :^)

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

        文檔

        在Javascript類中使用setTimeout_javascript技巧

        在Javascript類中使用setTimeout_javascript技巧:最近遇到了一道 Javascript 考題,內容如下: 嘗試實現注釋部分的 Javascript 代碼,可在其他任何地方添加更多 代碼(如不能實現,說明一下不能實現的原因): var Obj = function(msg){ this.msg = msg; this.shout = funct
        推薦度:
        標簽: js javascript timeout
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产成人综合亚洲绿色| 久久亚洲AV成人无码国产| 日韩国产欧美亚洲v片| 三年片在线观看免费观看高清电影 | 亚洲Aⅴ无码专区在线观看q| 国产一区二区三区免费观在线| 久久久久国产亚洲AV麻豆| 四虎精品成人免费视频| 亚洲男人天堂2020| 99久久免费国产精品热| 亚洲国产精品无码专区影院 | 岛国岛国免费V片在线观看 | 亚洲精品视频在线观看免费| 精品无码国产污污污免费网站| 亚洲精品中文字幕麻豆| 亚色九九九全国免费视频| 亚洲国产成人无码AV在线| 国产成人免费福利网站| 亚洲高清免费视频| 色拍自拍亚洲综合图区| 成年网站免费视频A在线双飞| 亚洲成熟丰满熟妇高潮XXXXX| 亚洲精品高清一二区久久| 中文在线观看免费网站| 亚洲激情校园春色| 国产男女性潮高清免费网站| 一级日本高清视频免费观看| 久久久久亚洲精品成人网小说| 国产精品免费精品自在线观看| 亚洲国产区男人本色| 国产美女亚洲精品久久久综合| 1a级毛片免费观看| 欧洲亚洲综合一区二区三区| 国产精品久久久亚洲| 成人影片麻豆国产影片免费观看| 国产精品亚洲一区二区三区久久 | 中国在线观看免费高清完整版| 久久精品国产亚洲AV未满十八| 亚洲日产韩国一二三四区| 99热在线精品免费全部my| 亚洲av无码专区在线观看亚|