gpt4 book ai didi

Javascript - 将类实例保存到哈希表/对象中并使用键实例函数

转载 作者:行者123 更新时间:2023-11-30 13:44:19 25 4
gpt4 key购买 nike

我有 2 个类 Key 和 Session,它们在每个类实例上输出唯一的“this.session/this.key”值:

//self executing function or IIFE(Immediately Invoked Function Expression) 
//classes that return unique key and sessions on every instance

const Session = (() => {
let lastSession = 80
return class Session{
constructor(){
this.session = lastSession
lastSession++
}

printSession(){
console.log(this.session)
}
}
})()

const Key = (() => {
let lastKey = 0

return class Key{
constructor(){
this.key = lastKey
lastKey++
}

printKey(){
console.log(this.key)
}
}
})()

我有第三个类管理器,它向对象/哈希表添加 {Key:Session} 实例对:

class Manager{
constructor(){
this.allSessions = {}
}

addSession(){
this.allSessions[new Key] = new Session
}

printSessions(){
for(let key in this.allSessions){
console.log(`${key} : ${this.allSessions[key]}`)
//key.printSession()
//console.log(key.key)
//this.allSessions[key].printSession()

}
}

}

有两个问题:

1)哈希表/对象在任何给定时间只有 1 个 {Key:Session} 对。不管多少 我进行的 addSession() 调用。这是因为它 将所有 Key 实例视为相同?我该如何解决这个问题。

2)在 Manager 类中的 printSessions() 函数中,我似乎无法打印出 key 使用我在 key 类中定义的 key.printKey() ?这是为什么?我也试过 console.log(key.key) 也不起作用。

最佳答案

您正在尝试使用 Key 类的实例作为对象属性名称。那行不通;属性名称始终是字符串,因此对象(Key 对象)被隐式转换为字符串。这总是导致字符串“[object Object]”。

你可以试试

    this.allSessions[new Key().key] = new Session

普通 JavaScript 对象确实看起来像哈希表,但键只能是字符串。您可能想要探索 map 类型。

关于Javascript - 将类实例保存到哈希表/对象中并使用键实例函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59594895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com