我有两个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.printKey()?这是为什么?我也试过console.log(key.key)也不起作用。
您正在尝试使用Key
类的实例作为对象属性名称。那行不通;属性名称始终是字符串,因此对象(Key
对象)将隐式转换为字符串。这总是导致字符串“ [object Object]”。
key
并且该实例还具有名为key
的属性的事实可能是您导致此错误的原因。