是否可以在初始化时引用同一映射中的值?



我在创建一个带有常量的map时遇到了一个情况,在初始化时无法引用同一map中的值。

的例子:

const map = {
PAGE_ID: '<some_string_id_value>',
URL: 'https://someUrl.com/?pageId=' + this.PAGE_ID
}
现在大多数人可能会告诉我"URL"应该是一个变量,因为常量是永远不变的,但它让我想知道为什么不可能在同一个映射中引用一个值。

是由于映射尚未完全初始化还是由于其他原因?

this关键字不在对象文本中操作,它将指向函数当前运行的对象。在这种情况下,你可以使用getter和setter:

const map = {
PAGE_ID: '<some_string_id_value>',
_URL: 'https://someUrl.com/?pageId=',
get URL() {
return this._URL + this.PAGE_ID
},
set URL(url) {
this._URL = url
}
}
console.log(map.URL) // https://someUrl.com/?pageId=<some_string_id_value>

您可以使用object .prototype.constructor创建一个构造函数MyMap和一个类型为map的对象

代码:

const MyMap = function () {
this.PAGE_ID = '<some_string_id_value>'
return {
PAGE_ID: this.PAGE_ID,
URL: `https://someUrl.com/?pageId=${this.PAGE_ID}`
}
}
const map = new MyMap()
console.log(map)

最新更新