javascript static class 检测哪个方法调用了前一个
javascript static class detect which method call previous
你能帮帮我吗!
在 emit 方法中如何检查他们是否调用了 room 方法。
以下两种情况:
// case 1: A.room('aa').emit('a1', 'aaa')
// case 2: A.emit('a2', 'aaa')
这是一个classA
class A {
static room(r) {
this.r = r
return this
}
static emit(event, data) {
//todo
console.log('this.r', this.r, {event, data})
}
}
感谢您的宝贵时间!
你需要为每个调用单独存储像 r
这样的流值,这对于静态 classes 来说是不合理的目标,因为你一次又一次地使用相同的 class,而不是独立的瞬间。可能的解决方案:
1.不再 static
:
class A {
room(r) {
this.r = r
return this
}
emit(event, data) {
console.log('this.r', this.r, {event, data})
}
}
new A().room('aa').emit('a1', 'aaa') // r = 'aa'
new A().emit('a2', 'aaa') // r = undefined
2。 Return 个具有自己范围的实例(A
保持静态):
class A {
static room(r) {
return new B(r)
}
static emit(...args) {
return new B().emit(...args)
}
}
class B {
constructor(r) {
this.r = r
}
emit(event, data) {
console.log('this.r', this.r, {event, data})
return this
}
}
A.room('aa').emit('a1', 'aaa') // r = 'aa'
A.emit('a2', 'aaa') // r = undefined
3。将逻辑委托给非静态 class(A
保持静态):
class B {
room(r) {
this.r = r
return this
}
emit(event, data) {
console.log('this.r', this.r, {event, data})
}
}
class A {
static room(...args) {
return new B().room(...args);
}
static emit(...args) {
return new B().emit(...args);
}
}
A.room('aa').emit('a1', 'aaa') // r = 'aa'
A.emit('a2', 'aaa') // r = undefined
...等等。
你能帮帮我吗!
在 emit 方法中如何检查他们是否调用了 room 方法。
以下两种情况:
// case 1: A.room('aa').emit('a1', 'aaa')
// case 2: A.emit('a2', 'aaa')
这是一个classA
class A {
static room(r) {
this.r = r
return this
}
static emit(event, data) {
//todo
console.log('this.r', this.r, {event, data})
}
}
感谢您的宝贵时间!
你需要为每个调用单独存储像 r
这样的流值,这对于静态 classes 来说是不合理的目标,因为你一次又一次地使用相同的 class,而不是独立的瞬间。可能的解决方案:
1.不再 static
:
class A {
room(r) {
this.r = r
return this
}
emit(event, data) {
console.log('this.r', this.r, {event, data})
}
}
new A().room('aa').emit('a1', 'aaa') // r = 'aa'
new A().emit('a2', 'aaa') // r = undefined
2。 Return 个具有自己范围的实例(A
保持静态):
class A {
static room(r) {
return new B(r)
}
static emit(...args) {
return new B().emit(...args)
}
}
class B {
constructor(r) {
this.r = r
}
emit(event, data) {
console.log('this.r', this.r, {event, data})
return this
}
}
A.room('aa').emit('a1', 'aaa') // r = 'aa'
A.emit('a2', 'aaa') // r = undefined
3。将逻辑委托给非静态 class(A
保持静态):
class B {
room(r) {
this.r = r
return this
}
emit(event, data) {
console.log('this.r', this.r, {event, data})
}
}
class A {
static room(...args) {
return new B().room(...args);
}
static emit(...args) {
return new B().emit(...args);
}
}
A.room('aa').emit('a1', 'aaa') // r = 'aa'
A.emit('a2', 'aaa') // r = undefined
...等等。