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

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

在中間件中調(diào)用對(duì)象函數(shù)

在中間件中調(diào)用對(duì)象函數(shù)

皈依舞 2021-10-14 16:55:05
我的中間件中有此代碼:const UserMiddleware = {  isNumber(n) { return !Number.isNaN(parseFloat(n)) && !Number.isNaN(n - 0); },  // eslint-disable-next-line consistent-return  validateSignUp(req, res, next) {    const allSignUpErrors = [];    console.log(this.isNumber(5));    if (this.isNumber(req.body.first_name)) {      allSignUpErrors.push('First name must be a text value');    }    if (allSignUpErrors.length !== 0) {      return res.status(400).json({        status: 400,        error: allSignUpErrors,      });    }    next();  },我通常使用“這個(gè)”??梢院翢o(wú)問題地調(diào)用對(duì)象中的函數(shù)和變量。我懷疑中間件中的“next()”函數(shù)是導(dǎo)致我在使用“this”時(shí)出現(xiàn)以下錯(cuò)誤的原因。調(diào)用一個(gè)函數(shù)。類型錯(cuò)誤:無(wú)法讀取未定義的屬性“isNumber”我曾嘗試使用“綁定”來(lái)調(diào)用該函數(shù),但仍然會(huì)出現(xiàn)“未定義”錯(cuò)誤。'next()' 函數(shù)是否破壞了正常功能?有沒有辦法正確使用“這個(gè)”。在中間件中調(diào)用函數(shù)?
查看完整描述

1 回答

?
喵喵時(shí)光機(jī)

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

改變:

this.isNumber(...)

到:

UserMiddleware.isNumber(...)

除非您在將其作為中間件傳遞時(shí)專門使用或某些類似技術(shù),否則this中間件函數(shù)內(nèi)部的值不會(huì)是您的UserMiddleware對(duì)象.bind()


如需更多選項(xiàng)的幫助,請(qǐng)向我們展示您使用的代碼validateSignUp()。

例如,如果您正在執(zhí)行以下操作:

app.use(UserMiddleware.validateSignUp);

然后,您可以this使用.bind()如下方式設(shè)置所需的值:

app.use(UserMiddleware.validateSignUp.bind(userMiddleware));

傳遞UserMiddleware.validateSignUp給函數(shù)會(huì)立即失去與UserMiddleware對(duì)象的關(guān)聯(lián),并且該this函數(shù)被調(diào)用時(shí)的值將取決于調(diào)用者如何調(diào)用該函數(shù)而不是該UserMiddleware對(duì)象。使用.bind(UserMiddleware)強(qiáng)制設(shè)置所需的this值。 .bind()實(shí)際上創(chuàng)建了一個(gè)包裝函數(shù),它的唯一工作是重新附加所需的this值,而該包裝函數(shù)是作為中間件處理程序傳遞的。中間件基礎(chǔ)結(jié)構(gòu)使用錯(cuò)誤的this值調(diào)用包裝函數(shù),然后包裝validateSignUp函數(shù)使用所需的值調(diào)用您的函數(shù)this- 可能使用.apply().

為了看看如何.bind()工作,你可以看到一個(gè)填充工具為它在這里的MDN。有關(guān)如何this設(shè)置的值的更多討論,請(qǐng)參閱設(shè)置 的六種方式this


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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