我有一种情况需要检查构造函数(X)在其原型链中是否有另一个构造函数(Y)(或者是Y本身).
最快的方法可能是这样做(new X()) instanceof Y.在这种情况下,这不是一个选项,因为有问题的构造函数可能会在没有有效参数的情况下实例化.
我考虑的下一个方法是:
const doesInherit = (A, B) => {
while (A) {
if (A === B) return true;
A = Object.getPrototypeOf(A);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这是行得通的,但我无法摆脱这种感觉,即我错过了一些更简单的检查方法.有吗?
大家好,我想知道是否有可能获得所有给定装饰器 javascript/typescript 的类。
例如我有课
@mydecorator
class SomeClass1{
}
Run Code Online (Sandbox Code Playgroud)
还有一些在模块中
@mydecorator
class SomeClass2{
}
Run Code Online (Sandbox Code Playgroud)
然后在运行时的其他模块中,我想获得所有具有装饰器 @mydecorator 的类或构造函数......恐怕这是不可能的:(
export function getaAllClassesByDecorator(decorator:string){
... return constructor or something that i am able to call static method
}
Run Code Online (Sandbox Code Playgroud) 所以我的问题如下:我可以获得调用函数的类的名称吗?为了说明这个问题,我将给出一个简短的代码示例。
class Base {
static getClassName() {
// get the caller class here
}
}
class Extended extends Base { }
Base.getClassName(); // Base
Extended.getClassName(); // Extended
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何做到这一点,或者说这是否可能。