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?