第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

這個(gè)javascript函數(shù)在做什么?

這個(gè)javascript函數(shù)在做什么?

拉丁的傳說(shuō) 2021-10-29 13:51:10
這是我需要修改的前承包商編寫(xiě)的代碼摘錄。我迷失在 ({function (e)}) 和閉包中。該代碼向驗(yàn)證服務(wù)器發(fā)出 http 請(qǐng)求并返回一個(gè)令牌,該令牌設(shè)置了 myPlugin 對(duì)象的成員變量 (r = e)。然后,該函數(shù)將 foobar.js 動(dòng)態(tài)加載到附加到 head 標(biāo)記的新腳本標(biāo)記中。foobar.js 中的代碼引用了 myPlugin 對(duì)象的 getter 函數(shù)。我只需要?jiǎng)h除 http 請(qǐng)求和回調(diào)并傳遞一個(gè)參數(shù)來(lái)設(shè)置 r 的值并將新的腳本標(biāo)記附加到 head 標(biāo)記。每次我嘗試修改 loadPluginJsFn 函數(shù)時(shí)都會(huì)出錯(cuò)。誰(shuí)能解釋 loadPluginJsFn 函數(shù)在做什么以及“(myPlugin);”的目的是什么?在 foobar.js 的末尾和 myPlugin 對(duì)象末尾的 () ?HTML文件var myPlugin = (function() {  var t, n, r, o_value ;  return {    set somevalue(e) {      o_value = e;    },    get somevalue() {      return o_value;    },    init(config){    },// This is where I don't understand what it happening    loadPluginJsFn: function(e) {      "function" == typeof e &&        e(function(e) {          e &&            ((r = e),            (function(e) {              var t = document.createElement("script");              (t.type = "text/javascript"),                (t.src = e),                document.querySelector("head").appendChild(t);            })(              "js/foobar.js"            ));        });    }  };})();myPlugin.loadPluginJsFn(function(callback) {  var xhr = new XMLHttpRequest();  xhr.onreadystatechange = function() {    if (this.readyState == 4 && this.status == 200) {      callback(xhr.responseText);    }  };  xhr.open("GET", "<some domain>", true);});foobar.js(function (my_Plugin) {    const somevars = 'xxx';    var   someMoreVars = '123'  function somefunctions(useDefaults = false) {    return somethingImportant;  }})(myPlugin);
查看完整描述

2 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

事實(shí)證明,刪除代碼比添加代碼容易得多。感謝@cucaracho 和@barmar 提供重要見(jiàn)解。這是我想出的解決方案。


我不再需要 AJAX 調(diào)用了——這就是我想要?jiǎng)h除的。從 loadPluginJsFn 中刪除回調(diào)被證明是一個(gè)挑戰(zhàn)。我打掃了房子并確認(rèn)它仍然正常運(yùn)行。


loadPluginJsFn(token) {

      r = token,      

      doc = document.createElement("script");

      doc.type = "text/javascript";

      doc.src = "js/foobar.js";

      document.querySelector("head").appendChild(doc);

}


查看完整回答
反對(duì) 回復(fù) 2021-10-29
?
夢(mèng)里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊

這是將該函數(shù)翻譯成更易讀的代碼:


loadPluginJsFn: function(cb) {

  if (typeof cb == "function") {

    cb(function(response) {

      if (response) {

        r = response;

        // Load the script from foobar.js

        var url = "js/foobar.js";

        var t = document.createElement("script");

        t.type = "text/javascript";

        t.src = url;

        document.querySelector("head").appendChild(t);

      }

    });

  }

}

cb將是執(zhí)行 AJAX 請(qǐng)求的函數(shù)<some domain>。收到響應(yīng)后,它會(huì)調(diào)用function(response)。這將插件變量r設(shè)置為響應(yīng),然后加載js/foobar.js腳本。


foobar.js然后執(zhí)行使用該MyPlugin對(duì)象的代碼(我假設(shè)您忽略了這些細(xì)節(jié)),并且該代碼大概使用r.


總結(jié):這從<some domain>使用 AJAX 中獲取一個(gè)值,將其放入 中的r變量中MyPlugin,然后運(yùn)行使用該插件的代碼。


查看完整回答
反對(duì) 回復(fù) 2021-10-29
  • 2 回答
  • 0 關(guān)注
  • 162 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)