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"; }
}
}
}
只需按照以下方式更改调用函数的方式
const backendUrls = { baseUrl: "http://localhost:8080", generalUrls: { baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; } }, } const example = backendUrls.generalUrls.baseUrlWithPrefix.bind(backendUrls); example();