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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript 的 callback 是否有問題,會導(dǎo)致對象無法傳遞

javascript 的 callback 是否有問題,會導(dǎo)致對象無法傳遞

收到一只叮咚 2019-03-21 18:15:16
以下這一段javascript中的callback是否有問題?/** * @author F * @description 用于與selectNull配合自動分析返回JSON數(shù)據(jù)生成select option值 * * @param ajaxUrl * @param subId * @param dftValue * @param IdKeyName * @param TxtKeyName * @param callbackFunc * @returns {boolean} */function selectChange(ajaxUrl, subId, dftValue, IdKeyName, TxtKeyName, callbackFunc) {    var subObj = document.getElementById(subId);    if (!subObj) {        alert('不存在的子對象!');        return false;    }    $.getJSON(ajaxUrl, function (json) {        subObj.options.length = 0;        subObj.options[0] = new Option(' 請選擇 ', '');        subObj.options[0].className = 'dft-empty';        var j = 1;        for (var i in json) {            subObj.options[j] = new Option(json[i][TxtKeyName], json[i][IdKeyName]);            j++;        }        if (dftValue) {            subObj.value = dftValue;        }        if (callbackFunc) {            callbackFunc();        }    });}比如調(diào)用的代碼:#在 searchForm.init() 中調(diào)用(searchForm 有一個屬性 formObj )selectChange(this.jsonUrlAgent, this.formObj['AgentIdP'].id, this.filter['AgentIdP'], 'AGENTID', 'AGENTNAME', this.reqAgentIdI);#但是到了 searchForm.reqAgentIdI() 方法中 this.formObj的this卻變成了window了有另一個描述不太一樣的重復(fù)問題:javascript中this.formObj 傳遞不過去,變成了TypeError: this.formObj is undefined - SegmentFault
查看完整描述

3 回答

?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個贊

因?yàn)?JavaScript 和 Python 不一樣。

當(dāng)你調(diào)用函數(shù) a.b() 時,在函數(shù) a.b 內(nèi) this 指向 a。但是當(dāng)你不直接這樣調(diào)用時,比如 var c = a.b; c(),JavaScript 看到 c 前邊沒有點(diǎn),因此不會將它作為方法對待,this 未定義(嚴(yán)格模式)或者指向 global 對象(瀏覽器中是 window)。

你應(yīng)該使用 .bind 方法(其它語言中叫 curry、partial application)來處理方法作為值傳遞時帶來的問題: var c = a.b.bind(a); c()。即先綁定第一個參數(shù)(即 this)到對象本身,再傳來傳去。

參見:JavaScript’s “this”: how it works, where it can trip you up。

PS: 相同的問題不要問多次。


查看完整回答
反對 回復(fù) 2019-04-13
?
蠱毒傳說

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個贊

你這個應(yīng)該是js的作用域的問題,js沒有塊級作用域,貌似在es6 use strict 模式下可以解決,但是瀏覽器尚未完全實(shí)現(xiàn)


查看完整回答
反對 回復(fù) 2019-04-13
?
長風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個贊

回調(diào)函數(shù),這個函數(shù)是執(zhí)行在selectChange中的,當(dāng)你在window下面執(zhí)行selectChange,那么this指向的就是window,既然老爸指向的都是window,那么兒子指向的肯定就是window了,


查看完整回答
反對 回復(fù) 2019-04-13
  • 3 回答
  • 0 關(guān)注
  • 503 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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