是否可以捕获extends
?或者在类中捕获定义?例如:
class B extends A {
method1( ) { }
static method2( ) { }
}
是否有任何方法可以捕获以下事件:
B
已延长A
。method1( )
已在B.prototype
method2( )
已在B
上定义。
现有的机制似乎都不起作用。尝试了setPrototypeOf
和defineProperty
陷阱。
答案 0 :(得分:1)
当类B
扩展类A
时,它会获取其prototype
对象。因此,您可以在get
上定义带有陷阱的代理,并检查所访问的属性是否为"prototype"
。
class A {}
PA = new Proxy(A, {
get(target, property, receiver) {
console.log('get', property)
if (property == 'prototype')
console.info('extending %o, prototype=%s', target, target.prototype)
return target[property]
}
})
class B extends PA {}