gpt4 book ai didi

ecmascript-6 - 在 ES6 中通过 Proxy 捕获类定义

转载 作者:行者123 更新时间:2023-12-04 03:15:14 25 4
gpt4 key购买 nike

是否可以捕获 extends?或者在类中捕获定义?例如:

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


有什么方法可以捕获以下事件:

  • B 扩展A
  • method1( ) 是在 B.prototype
  • 上定义的
  • method2( ) 是在 B 上定义的。


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

最佳答案

当类 B 扩展类 A 时,它会得到它的 prototype 对象。因此,您可以定义一个在 get 上带有陷阱的 Proxy,然后检查正在访问的属性是否为 "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 {}

关于ecmascript-6 - 在 ES6 中通过 Proxy 捕获类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41665331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com