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

时间:2014-11-25 23:22:53

标签: javascript string types

我有几个字符串

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]];
}

有效,但如果存在,我正在寻找更优雅的东西。

3 个答案:

答案 0 :(得分:3)

显而易见的是什么?

var i, x, constructors = [
    String,
    Object,
    Boolean
];

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

请记住,JS中的任何内容都是一个对象(包括&#34;类名&#34;),并且可以使用,但是你可以使用它。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

使用eval function

找到了一个很好的方法
strings = [
    "String",
    "Object",
    "Boolean"
]

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

总结eval("String") === [Function: String]