构造函数vs typeof以检测JavaScript中的类型

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);
上一篇:tensorflow InvalidArgumentError:您必须使用dtype float输入占位符张量的值


下一篇:python-以任何方式在Pandas DataFrame查询中强制转换类型吗?