js在函数中获取调用对象的类

时间:2017-12-07 19:25:07

标签: javascript typescript decorator

我的结构类似于:

--insecure

不幸的是,它为 class Person { greet() { console.log(this.constructor.name) } } class User extends Person { } let user = new User() user.greet() 而不是window打印this.constructor.name。 有没有其他方法来获取实际的类名?

实际代码:

User

1 个答案:

答案 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上下文。