js 如何检查变量的类型是 function Number() 还是 function String()

Ger*_*Wyk 2 javascript

在 JavaScript 中。如何测试变量是否等于function Number()function String()

我从模式定义中读取反应道具,其类型设置为属性。因此 a havethis.props.fieldType是 a function Number()or function String()

我努力了:

 if(this.props.fieldType instanceof Number)
Run Code Online (Sandbox Code Playgroud)

if(Object.getPrototypeOf(this.props.fieldType) === Number.prototype)
Run Code Online (Sandbox Code Playgroud)

根据 instanceof描述但这不起作用。不知道为什么。

T.J*_*der 5

尝试检查该属性的值是否function Number()function String()

如果您的字面意思是函数 NumberString,请使用==(或===):

if (this.props.fieldType === Number) {
Run Code Online (Sandbox Code Playgroud)

如果您的意思是“它是一个数字”还是“它是一个字符串”,请使用typeof,而不是instanceof

if (typeof this.props.fieldType === "number") {
Run Code Online (Sandbox Code Playgroud)

如果您的意思是“它是通过 new 创建的对象吗Number”(这真的很不寻常),那么这instanceof就是您想要的:

if (this.props.fieldType instanceof Number) {
Run Code Online (Sandbox Code Playgroud)

所有三个的示例:

if (this.props.fieldType === Number) {
Run Code Online (Sandbox Code Playgroud)


你提到了instanceof关于做getPrototypeOf和平等比较。重要的是要了解这些是非常不同的事情。

instanceof检查对象(左侧操作数)是否在其原型链中的任何位置prototype具有函数(右侧操作数)的当前属性。它可能不是对象的直接原型;可能还会进一步下降。例如:

if (typeof this.props.fieldType === "number") {
Run Code Online (Sandbox Code Playgroud)