Heim > Fragen und Antworten > Hauptteil
Ich versuche ein JS-Objekt zu erstellen, das alle URLs enthält.
Ich möchte dies durch den data()-Teil erreichen:
export default defineComponent({ name: 'MyPage', data() { backendUrls: {...} } })
Einfacher betrachtet würde es so aussehen:
backendUrls: { baseUrl: "http://localhost:8080", baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; } userAdd: function() { return this.baseUrlWithPrefix() + "/user/add"; } }
Ich kann das Schlüsselwort this
verwenden, da es auf dasselbe Objekt verweist wie die angegebene Eigenschaft.
Aber ich möchte es noch weiter aufteilen und Objekte innerhalb von Objekten erstellen:
backendUrls: { baseUrl: "http://localhost:8080", generalUrls: { baseUrlWithPrefix: ... }, socketUrls: { messageUrls: { userAdd: ... } } }
Wenn ich hier generalUrls: { baseUrlWithPrefix: function() { return this.baseUrl + "/ver1" }}
versuche, funktioniert es nicht, da baseUrl nicht gefunden werden kann
, da das Schlüsselwort generalUrls: { baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; }}
,它不会起作用,因为它找不到baseUrl
,因为this
关键字指向generalUrls
对象,而不是backendUrls
对象,baseUrl
auf das Objekt generalUrls
verweist, nicht auf das Objekt backendUrls
, in dem baseUrl
vorhanden ist.
Ich brauche so etwas:
backendUrls: { baseUrl: "http://localhost:8080", generalUrls: { baseUrlWithPrefix: function() { return {goBackToParentObject}.this.baseUrl + "/ver1"; } }, socketUrls: { messageUrls: { userAdd: function() { return {goBackToParentObject}.this.generalUrls.baseUrlWithPrefix() + "/user/add"; } } } }
P粉4329300812024-04-05 13:13:09
只需按照以下方式更改调用函数的方式
const backendUrls = { baseUrl: "http://localhost:8080", generalUrls: { baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; } }, } const example = backendUrls.generalUrls.baseUrlWithPrefix.bind(backendUrls); example();