instanceof String nie zachowuje się zgodnie z oczekiwaniami w skrypcie Google Apps

Chciałem sprawdzić, czy zmienna w skrypcie aplikacji jest ciągiem znaków, ale okazało się, że instanceof nie powracał do prawdy, gdy zmienna była w rzeczywistości łańcuchem. Następujący test:

function test_instanceof() {
  var a = "a";
  Logger.log('"a" is ' + ((a instanceof String) ? '' : 'not ') + 'a String');
  var b = String("b");
  Logger.log('String("b") is ' + ((b instanceof String) ? '' : 'not ') + 'a String');
}

Rejestruje te dwie wiadomości:

"a" is not a String
String("b") is not a String

Dokumenty nie są jasne w podzbiorze obsługiwanego ECMAScript, chociaż najwyraźniej instanceof jest poprawnym operatorem, a String jest poprawnym typem, sądząc z faktu, że kod wykonano bez wyjątku.

Jaki jest odpowiedni sposób sprawdzenia typu zmiennej?

questionAnswers(1)

yourAnswerToTheQuestion