摘要:附,在設(shè)計(jì)模式看到的譯者注譯者注定義一個構(gòu)造函數(shù)時,其默認(rèn)的對象是一個類型的實(shí)例,其屬性會被自動設(shè)置為該構(gòu)造函數(shù)本身。
問題
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回調(diào)中再也引用不到主對象的this了,當(dāng)然就沒有辦法獲取this.foo變量了,有什么辦法可以在這個回調(diào)中繼續(xù)引用主對象呢
答案最簡單的辦法就是將主對象的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是一個構(gòu)造函數(shù),現(xiàn)在你這么直接設(shè)置它的原型對象,最好還是將原型對象的constructor屬性(設(shè)置)恢復(fù)為myObject。
附,在<
/*
*譯者注:定義一個構(gòu)造函數(shù)時,其默認(rèn)的prototype對象是一個Object 類型的實(shí)例,其constructor屬性會被自動設(shè)置
*為該構(gòu)造函數(shù)本身。如果手工將其prototype 設(shè)置為另外一個對象,那么新對象自然不會具有原對象的constructor值,
*所以需要重新設(shè)置其constructor 值。
*/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/85486.html
摘要:參考一步一步搭建前端監(jiān)控系統(tǒng)錯誤監(jiān)控篇用插件記錄網(wǎng)絡(luò)請求異常關(guān)于專注于微信小程序微信小游戲支付寶小程序和線上應(yīng)用實(shí)時監(jiān)控。 摘要: 如何監(jiān)控HTTP請求錯誤? 作者:一步一個腳印一個坑 原文:搭建前端監(jiān)控系統(tǒng)(四)接口請求異常監(jiān)控篇 Fundebug經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有。 背景:市面上的監(jiān)控系統(tǒng)有很多,大多收費(fèi),對于小型前端項(xiàng)目來說,必然是痛點(diǎn)。另一點(diǎn)主要原因是,功能雖然...
摘要:的學(xué)習(xí)筆記是異步和的縮寫,它的作用是執(zhí)行異步的網(wǎng)絡(luò)請求。這就是一個格式的,向這個地址請求,將得到一個回調(diào)函數(shù),執(zhí)行就得到數(shù)據(jù)。 AJAX的學(xué)習(xí)筆記 AJAX是異步JavaScript和XML的縮寫,它的作用是執(zhí)行異步的網(wǎng)絡(luò)請求。因?yàn)镴S是線性同步,如果需要用戶向?yàn)g覽器發(fā)送一個請求,那么就需要等瀏覽器接收到了結(jié)果才能繼續(xù)運(yùn)行,如果發(fā)送到接受的時間太長,瀏覽器就會很長時間處于假死狀態(tài),這樣...
摘要:于是乎同源策略應(yīng)運(yùn)而生主要限制在于和無法讀取。怎么繞過同源策略首先一般來說協(xié)議和端口造成的跨域問題大部分方法是沒有辦法繞過的。二級域名是寄存在主域名之下的域名。當(dāng)主域名受到懲罰二級域名也會連帶懲罰。 前言 這是一道前端跨不過躲不掉面試必備的知識,掙扎多年沒能做到刻骨銘心深入脊髓,只能好好寫篇博文記錄起來了; 什么是跨域? 廣義來說,A域執(zhí)行的文檔腳本試圖去請求B域下的資源是不被允許的,...
摘要:默認(rèn)參數(shù)為空字符串密碼,可選參數(shù),用于授權(quán)。默認(rèn)參數(shù)為空字符串備注如果不是有效的方法或地址不能被成功解析,將會拋出異常如果請求方法不區(qū)分大小寫為或?qū)伋霎惓V貙懹煞?wù)器返回的類型。 本文詳細(xì)介紹了 XMLHttpRequest 相關(guān)知識,涉及內(nèi)容: AJAX、XMLHTTP、XMLHttpRequest詳解、XMLHttpRequest Level 1、Level 2 詳解 XHR...
閱讀 2617·2023-04-26 00:57
閱讀 971·2021-11-25 09:43
閱讀 2283·2021-11-11 16:55
閱讀 2360·2019-08-30 15:53
閱讀 3651·2019-08-30 15:52
閱讀 1526·2019-08-30 14:10
閱讀 3435·2019-08-30 13:22
閱讀 1262·2019-08-29 11:18