【发布时间】:2019-05-14 16:08:33
【问题描述】:
是否可以确定 JavaScript 函数是否是静态的?我编写了一个类来测试它,但我需要编写isStatic 方法,它应该返回一个布尔值,显示传入的函数是静态的(返回true)还是不是(返回false)。有人有这方面的代码吗?谢谢
class MyClass {
static myStaticMethod() {
return 'hi'
}
myMethod() {
return 'hi'
}
isStatic(func) {
// return a boolean here which shows whether func is static or not
}
test1() {
return this.isStatic(MyClass.myStaticMethod)
}
test2() {
return this.isStatic(this.myMethod)
}
}
const obj = new MyClass()
console.log(obj.test1()) // should return true - currently returns undefined
console.log(obj.test2()) // should return false - currently returns undefined
【问题讨论】:
-
为什么需要在运行时确定这一点?
-
我正在使用 JavaScript 装饰器。装饰函数必须是纯函数。由于不可能轻易确定一个函数是否是纯函数,我的想法是强制装饰函数是静态的。这是因为静态函数大多都是纯函数(除非您在其中添加 Math.random 语句)。这是为了保护开发者免受自身伤害。
标签: javascript static