国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

讓setInteval里的函數參數中的this指向特定的對象

2019-11-17 03:50:19
字體:
來源:轉載
供稿:網友
話說阿里巴巴今年的校園招聘有一道題目考了一個知識點,那就是setInterval的參數函數里的this指向.

看到這個題,我蒙了,因為那時候我不清除這個問題,想了半天沒想出來,后來到網上一查,在國外的某網站查到說setInterval和setTimeout之后的函數的作用域是全局的,也就是里面的this指向的是全局對象.

這個問題可麻煩了,我經常要在循環函數里用this來引用當前對象,也許你想到可以用閉包,不過實際情況并非如此簡單,對象實例多了之后,閉包也亂套了.

我的愿望就是讓循環函數里的this仍然指向當前上下文的對象,無需傳參數,無需閉包(其實這也是閉包,只是形式上看著比較自然而已);

例如:(一部分代碼,作用是定時發送請求)

  1 var sendRequest=function(){}

2 sendRequest.PRototype={
3 .............................
4 .............................
5 beginSend:function(){
6     //使循環函數里的this指向本對象,而不是全局對象
7     this.loop_send=setInterval((function(param){
8        return function(){param.sendARequest();}
9     })(this),this.options.interval);
10 },
11 sendARequest:function(){
12      this.num++;
13      this.checkLimit();
14       var callback = {
15                             success: this.handleSuccess,
16                             failure: this.handleFail,
17                             argument: {
18                                 handle: this,
19                                 timeout:500
20                             }
21       }
22         var post_data="...."
23       //如果待發送的數據不為空,則將取出一條數據發到后臺
24       if(this.data_wait_for_send.length!=0){
25       for(var i=0,j=this.data_wait_for_send.length;i<j;i++){
26            post_data+="&content[]="+this.data_wait_for_send[i];
27        }
28         this.data_wait_for_send=[]
29      }
30   //       debug(post_data)
31     var que = Connect.asyncRequest('POST', this.options.getUrl, callback,post_data);
32  },
33 ......................
34 ......................
35 }
36

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴文县| 斗六市| 通榆县| 宁南县| 嵊泗县| 夏邑县| 白城市| 通化县| 上饶县| 福建省| 彭山县| 大城县| 南华县| 开封市| 江油市| 襄垣县| 抚顺市| 塔河县| 勃利县| 吉安市| 孙吴县| 乌兰察布市| 黎川县| 永宁县| 元江| 建宁县| 区。| 中西区| 石狮市| 大丰市| 湖南省| 宜阳县| 新泰市| 邹城市| 横峰县| 叶城县| 嘉祥县| 蕉岭县| 揭东县| 波密县| 寿阳县|