我正在尝试创建一个包含所有URL的JS对象。
我想通过data()部分来实现这一目标:
export default defineComponent({
name: 'MyPage',
data() {
backendUrls: {...}
}
})
以更简单的方式来看,它会像这样:
backendUrls: {
baseUrl: "http://localhost:8080",
baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; }
userAdd: function() { return this.baseUrlWithPrefix() + "/user/add"; }
}
我可以使用this关键字,因为它指向与给定属性所在的对象相同的对象。
但是我想再分割一下,并在对象中创建对象:
backendUrls: {
baseUrl: "http://localhost:8080",
generalUrls: {
baseUrlWithPrefix: ...
},
socketUrls: {
messageUrls: {
userAdd: ...
}
}
}
在这里,如果我尝试generalUrls: { baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; }},它不会起作用,因为它找不到baseUrl,因为this关键字指向generalUrls对象,而不是backendUrls对象,baseUrl存在于后者中。
我需要像这样的东西:
backendUrls: {
baseUrl: "http://localhost:8080",
generalUrls: {
baseUrlWithPrefix: function() { return {goBackToParentObject}.this.baseUrl + "/ver1"; }
},
socketUrls: {
messageUrls: {
userAdd: function() { return {goBackToParentObject}.this.generalUrls.baseUrlWithPrefix() + "/user/add"; }
}
}
} Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
只需按照以下方式更改调用函数的方式
const backendUrls = { baseUrl: "http://localhost:8080", generalUrls: { baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; } }, } const example = backendUrls.generalUrls.baseUrlWithPrefix.bind(backendUrls); example();