gpt4 book ai didi

javascript - ES6 检测函数是否在类实例的原型(prototype)链上

转载 作者:搜寻专家 更新时间:2023-11-01 04:39:32 24 4
gpt4 key购买 nike

给定一个 ES6 类:

class C {
x () { }
fnIsMethodOfC (fn) { return /* ? */ }
}

以及各种函数如

function y () {}
z = () => {}

是否有一种有效的方法来确定函数是否是 C 的方法,即

c = new C()
c.fnIsMethodOfC(c.x) === true
c.fnIsMethodOfC(C.prototype.x) === true
c.fnIsMethodOfC(y) === false
c.fnIsMethodOfC(z) === false

我知道可以通过原型(prototype)链递归循环,但那将是一项昂贵的操作。

链接相关问题:

最佳答案

一个选项可能是:

class C {
fnIsMethodOfC (fn) {
const proto = Object.getPrototypeOf(this)
return proto && proto[fn.name] === fn
}
}

关于javascript - ES6 检测函数是否在类实例的原型(prototype)链上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52138232/

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