【发布时间】:2015-08-26 19:49:01
【问题描述】:
既然类在 ES6+ 中,我希望能够检查一个值是常规函数还是类定义,例如:
console.log(isClass(class A {}), 'should be true')
console.log(isClass(class B {}), 'should be true')
console.log(isClass(function () {}), 'should be false')
但是,我似乎找不到任何方法来解决这个问题。我曾考虑过使用Object.getOwnPropertyNames(class A {}) 和(class A {}).__proto__ === Function.prototype,但它们也为函数返回true。
到目前为止,我想出的最好的是:
function isClass (thing) {
return typeof thing === 'function' && Object.getOwnPropertyNames(thing).indexOf('arguments') === -1
}
但这似乎并不那么强大。
【问题讨论】:
-
谢谢,第二个副本
标签: javascript class