Ecmascript 6 在ES6中通过代理捕获类定义

Ecmascript 6 在ES6中通过代理捕获类定义,ecmascript-6,metaprogramming,es6-class,es6-proxy,Ecmascript 6,Metaprogramming,Es6 Class,Es6 Proxy,是否可以陷阱扩展?或者在类中捕获定义?例如: class B extends A { method1( ) { } static method2( ) { } } 是否有任何方法可以捕获以下事件: BextendedA method1()是在B.prototype method2()是在B上定义的 现有机制似乎都不起作用。尝试了setPrototypeOf和defineProperty陷阱。当类B扩展类A时,它将获得其原型对象。因此,您可以在getet上定义一个带有陷阱

是否可以陷阱
扩展
?或者在类中捕获定义?例如:

class B extends A {
    method1( ) { }
    static method2( ) { }
}

是否有任何方法可以捕获以下事件:

  • B
    extended
    A
  • method1()
    是在
    B.prototype
  • method2()
    是在
    B
    上定义的


现有机制似乎都不起作用。尝试了
setPrototypeOf
defineProperty
陷阱。

当类
B
扩展类
A
时,它将获得其
原型
对象。因此,您可以在
get
et上定义一个带有陷阱的代理,并检查所访问的属性是否为
“prototype”

class A{}
PA=新代理(A{
获取(目标、属性、接收者){
console.log('get',属性)
如果(属性=='prototype')
console.info('扩展%o,原型=%s',目标,目标.prototype)
返回目标[属性]
}
})

B类扩展了PA{}
您想在哪里捕获这些东西<代码>B在某一时刻不存在,在另一时刻已定义。解释一下你的情况可能会有帮助。你到底想解决什么问题?我猜可能还有其他方法可以解决这个问题,我们可以帮助解决。用例类似于人们为什么想要捕获
defineProperty
:在对象上定义某个内容时自动运行代码。由于没有触发
defineProperty
陷阱,我正在检查
extends
是否可以被陷阱捕获。我没有一个强大的
扩展
捕获用例。@Gubbi注意到原型可以在其他情况下访问,所以要小心,可能需要根据您的用例进行进一步检查。