2010-05-25 51 views
4

比方说,我有这样的(假设名字变量是“接收器”):的JavaScript的instanceof从字符串名称获取型

if (!(receiver instanceof com.HTMLReceiver)) { 
    throw new com.IllegalArgumentException(
     name + " is not an instance of com.HTMLReceiver."); 
} 

我想了这个因素的代码放到一个常用的方法,所以我可以打电话它是这样的:

Helper.checkInstance(receiver, "com.HTMLReceiver"); 

但我不知道的方式向com.HTMLReceiver从字符串转换为它的实际类型这样我就可以使用它instanceof

有没有办法?

回答

3

我会叫它为:

Helper.checkInstance(receiver, com.HTMLReceiver); 

这会不会让你打印类型名( “com.HTMLReceiver”)。

或:

Helper.checkInstance(receiver, com.HTMLReceiver, "com.HTMLReceiver"); 

您在打印使用的用户字符串。

注意,相同类型可以有多种类型名称

var foo = com.HTMLReceiver; 

foocom.HTMLReceiver是同一事物的名称。

JavaScript没有办法从类型到类型名称本身。

如果你只传入字符串,我认为唯一的一般解决方案是eval。

+0

似乎他想要得到构造函数的*名称*,并将其连接到异常的字符串参数... – CMS 2010-05-25 04:05:53

+0

酷,看起来很有前途。但为什么它不适用于“instanceof Number”? – dcp 2010-05-25 04:17:57

+0

不知道“name”是指什么,但看起来它与'receiver'有关。 – Anurag 2010-05-25 04:18:29