做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答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
主站蜘蛛池模板: 盐池县| 松潘县| 迁安市| 怀宁县| 丰台区| 长春市| 分宜县| 荔浦县| 会泽县| 大兴区| 汉中市| 巩留县| 四子王旗| 临武县| 通江县| 镇安县| 乐都县| 综艺| 上虞市| 驻马店市| 萝北县| 九江市| 伊川县| 宁阳县| 武夷山市| 焦作市| 海伦市| 泊头市| 大城县| 资兴市| 枣强县| 临湘市| 连城县| 阳城县| 临朐县| 常州市| 中宁县| 青田县| 乐亭县| 宣城市| 上杭县|