我的结构类似于:
--insecure
不幸的是,它为 class Person {
greet() {
console.log(this.constructor.name)
}
}
class User extends Person {
}
let user = new User()
user.greet()
而不是window
打印this.constructor.name
。
有没有其他方法来获取实际的类名?
实际代码:
User
答案 0 :(得分:1)
你的问题在于这一部分:
descriptor.value = async function(...args: any[]) {
// here I expect this to be Book, but I get Window
return new Promise(function(resolve, reject) {
Meteor.call(meteorMethodName, this.constructor.name, this, args, (error: any, result: any) => {
if(error) reject(error)
resolve(result)
})
})
}
需要这样:
descriptor.value = async function(...args: any[]) {
// With the arrow function, should be Book
return new Promise((resolve, reject) => {
Meteor.call(meteorMethodName, this.constructor.name, this, args, (error: any, result: any) => {
if(error) reject(error)
resolve(result)
})
})
}
您传递给Promise
构造函数的函数是设置新的上下文,使用箭头函数从周围方法中选取this
上下文。