J'essaie de créer un objet JS qui contient toutes les URL.
Je souhaite y parvenir grâce à la partie data() :
export default defineComponent({
name: 'MyPage',
data() {
backendUrls: {...}
}
})
En regardant les choses d'une manière plus simple, cela ressemblerait à ceci :
backendUrls: {
baseUrl: "http://localhost:8080",
baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; }
userAdd: function() { return this.baseUrlWithPrefix() + "/user/add"; }
}
Je peux utiliser le mot-clé this car il pointe vers le même objet que la propriété donnée.
Mais je veux le diviser davantage et créer des objets dans des objets :
backendUrls: {
baseUrl: "http://localhost:8080",
generalUrls: {
baseUrlWithPrefix: ...
},
socketUrls: {
messageUrls: {
userAdd: ...
}
}
}
Ici, si j'essaye generalUrls : { baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; }}, cela ne fonctionnera pas car il ne trouve pas baseUrl , car le mot-clé generalUrls: { baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; }},它不会起作用,因为它找不到baseUrl,因为this关键字指向generalUrls对象,而不是backendUrls对象,baseUrl pointe vers l'objet generalUrls, et non vers l'objet backendUrls, dans lequel baseUrl existe.
J'ai besoin de quelque chose comme ceci :
backendUrls: {
baseUrl: "http://localhost:8080",
generalUrls: {
baseUrlWithPrefix: function() { return {goBackToParentObject}.this.baseUrl + "/ver1"; }
},
socketUrls: {
messageUrls: {
userAdd: function() { return {goBackToParentObject}.this.generalUrls.baseUrlWithPrefix() + "/user/add"; }
}
}
}
Changez simplement la façon dont vous appelez la fonction comme suit
const backendUrls = { baseUrl: "http://localhost:8080", generalUrls: { baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; } }, } const example = backendUrls.generalUrls.baseUrlWithPrefix.bind(backendUrls); example();