我在创建一个带有常量的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)