[英]How to get data type from string javascript
我有幾串
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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.