如何从字符串 javascript 中获取数据类型

How to get data type from string javascript

本文关键字:获取 数据类型 javascript 字符串      更新时间:2023-09-26

我有几个字符串

strings = [
    "String",
    "Object",
    "Boolean"
]

我想用它们来声明新对象

for(var i = 0; i < strings.length; i++){
    var x = new strings[i];
}

但相反,我收到此错误:

TypeError: string is not a function
  at Object.<anonymous> (/Users/path/code.js)
  at Object.<anonymous> (/Users/path/code.js)
  at Module._compile (module.js:456:26)

如何将字符串视为其基础类型?


旁白:

我知道我可以做这样的事情

type_map = {
    String: String,
    Object: Object,
    Boolean: Boolean
}

然后去

for(var i = 0; i < strings.length; i++){
    var x = new type_map[strings[i]];
}

这有效,但如果存在的话,我正在寻找稍微优雅一点的东西。

显而易见的有什么问题?

var i, x, constructors = [
    String,
    Object,
    Boolean
];
for(i = 0; i < constructors.length; i++){
    x = new constructors[i];
}

请记住,JS中的任何内容都是对象(包括"类名"),几乎可以随心所欲地使用。

这些类的构造函数是全局对象的属性。

例如,在浏览器中,您可以执行

console.log(window['String'] === String); // true
var str = new window[strings[0]]();
console.log(str); // ""

找到了使用 eval 函数执行此操作的好方法

strings = [
    "String",
    "Object",
    "Boolean"
]
for(var i = 0; i < strings.length; i++){
    var x = new (eval(strings[i]));
}

所以总结一下eval("String") === [Function: String]