Javascript instanceof получить тип из имени строки - PullRequest
4 голосов
/ 25 мая 2010

Допустим, у меня есть это (предположим, что переменная name - "receiveer"):

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 для нее.

Есть ли способ?

1 Ответ

3 голосов
/ 25 мая 2010

Я бы назвал это:

Helper.checkInstance(receiver, com.HTMLReceiver);

Это не позволит вам напечатать имя типа ("com.HTMLReceiver").

или

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

Вы используете пользовательскую строку в печати. ​​

Обратите внимание, что один и тот же тип может иметь несколько имен типов

var foo = com.HTMLReceiver;

foo и com.HTMLReceiver являются названиями для одной и той же вещи.

JavaScript не может перейти от типа к самому имени типа.

Если вы передадите только строку, я думаю, что единственным общим решением будет eval.

...