国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

在對象里定義了一個XMLHttpRequest請求了,怎么在請求的回調中引用對象的『this』『神獸

boredream / 1059人閱讀

摘要:附,在設計模式看到的譯者注譯者注定義一個構造函數時,其默認的對象是一個類型的實例,其屬性會被自動設置為該構造函數本身。

問題

XMLHttpRequest inside an object: how to keep the reference to “this”

且看代碼

javascriptmyObject.prototye = {
  ajax: function() {
    this.foo = 1;

    var req = new XMLHttpRequest();
    req.open("GET", url, true);
    req.onreadystatechange = function (aEvt) {  
      if (req.readyState == 4) {  
        if(req.status == 200)  {
          alert(this.foo); // reference to this is lost
        }
      }
  }
};

onreadystatechange回調中再也引用不到主對象的this了,當然就沒有辦法獲取this.foo變量了,有什么辦法可以在這個回調中繼續引用主對象呢

答案

最簡單的辦法就是將主對象的this保存到局部變量中,

javascriptmyObject.prototype = {
  ajax: function (url) { // (url argument missing ?)
    var instance = this; // <-- store reference to the `this` value
    this.foo = 1;

    var req = new XMLHttpRequest();
    req.open("GET", url, true);
    req.onreadystatechange = function (aEvt) {  
      if (req.readyState == 4) {  
        if (req.status == 200)  {
          alert(instance.foo); // <-- use the reference
        }
      }
    };
  }
};

如果我沒有猜錯的話,myObject是一個構造函數,現在你這么直接設置它的原型對象,最好還是將原型對象的constructor屬性(設置)恢復為myObject。

附,在<>看到的譯者注:
/*
*譯者注:定義一個構造函數時,其默認的prototype對象是一個Object 類型的實例,其constructor屬性會被自動設置
*為該構造函數本身。如果手工將其prototype 設置為另外一個對象,那么新對象自然不會具有原對象的constructor值,
*所以需要重新設置其constructor 值。
*/

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85486.html

相關文章

  • 一步一步搭建前端監控系統:接口請求異常監控篇

    摘要:參考一步一步搭建前端監控系統錯誤監控篇用插件記錄網絡請求異常關于專注于微信小程序微信小游戲支付寶小程序和線上應用實時監控。 摘要: 如何監控HTTP請求錯誤? 作者:一步一個腳印一個坑 原文:搭建前端監控系統(四)接口請求異常監控篇 Fundebug經授權轉載,版權歸原作者所有。 背景:市面上的監控系統有很多,大多收費,對于小型前端項目來說,必然是痛點。另一點主要原因是,功能雖然...

    dreamtecher 評論0 收藏0
  • AJAX學習筆記

    摘要:的學習筆記是異步和的縮寫,它的作用是執行異步的網絡請求。這就是一個格式的,向這個地址請求,將得到一個回調函數,執行就得到數據。 AJAX的學習筆記 AJAX是異步JavaScript和XML的縮寫,它的作用是執行異步的網絡請求。因為JS是線性同步,如果需要用戶向瀏覽器發送一個請求,那么就需要等瀏覽器接收到了結果才能繼續運行,如果發送到接受的時間太長,瀏覽器就會很長時間處于假死狀態,這樣...

    RobinTang 評論0 收藏0
  • 前端跨域之原因&&方案&&原理

    摘要:于是乎同源策略應運而生主要限制在于和無法讀取。怎么繞過同源策略首先一般來說協議和端口造成的跨域問題大部分方法是沒有辦法繞過的。二級域名是寄存在主域名之下的域名。當主域名受到懲罰二級域名也會連帶懲罰。 前言 這是一道前端跨不過躲不掉面試必備的知識,掙扎多年沒能做到刻骨銘心深入脊髓,只能好好寫篇博文記錄起來了; 什么是跨域? 廣義來說,A域執行的文檔腳本試圖去請求B域下的資源是不被允許的,...

    Zack 評論0 收藏0
  • 你不知道 XMLHttpRequest

    摘要:默認參數為空字符串密碼,可選參數,用于授權。默認參數為空字符串備注如果不是有效的方法或地址不能被成功解析,將會拋出異常如果請求方法不區分大小寫為或將會拋出異常重寫由服務器返回的類型。 本文詳細介紹了 XMLHttpRequest 相關知識,涉及內容: AJAX、XMLHTTP、XMLHttpRequest詳解、XMLHttpRequest Level 1、Level 2 詳解 XHR...

    ckllj 評論0 收藏0

發表評論

0條評論

boredream

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<