在this question中,我没有看到使用构造函数的建议.
因此,而不是typeof回调==“ function”
我会使用回调&& (callback.constructor ==功能).
在我看来,就运行时性能和编码安全性而言,与内存指针进行比较似乎总是比与字符串进行比较更好.
为什么不使用构造函数来检测所有类型并忘记难看的typeof?
它适用于所有原始类型,函数和数组:
undefined === undefined
null === null
[1,2,3].constructor == Array
(1).constructor == Number
(true).constructor == Boolean
(()=>null).constructor == Function
'abc'.constructor == String
(new Date()).constructor == Date
else it's an object, where instanceof helps to detect it's parents if needed.
如果可以依靠string interning,则运行时性能优势将消失.但是安全的编码优势仍然存在.
解决方法:
instanceOf更好,因为它可与继承的构造函数一起使用. .constructor是对象上的可变属性,因此检查它不是一件好事,因为可以简单地对其进行更改.您无法更改instanceOf.
const x = new Date();
console.log("Date Constructor", x.constructor);
x.constructor = "herpderpderp";
console.log("Date Constructor", x.constructor);