Jaki jest najlepszy sposób, aby dowiedzieć się, czy zmienna jest ciągiem czy nie (i, podobnie, liczba, wartość logiczna, itd.)?Sprawdzanie typu zmiennej
Zazwyczaj znajdziesz:
function isString(value) {
return typeof value === 'string';
}
Ale ludzie zapominają, że można także utworzyć ciąg obiektów bezpośrednio za pomocą var foo = new String("bar");
- czy to jest dobry pomysł, czy nie jest to zupełnie inna sprawa.
Więc co jest do zrobienia tutaj? Mogę myśleć - i widziałem - różne podejścia (nieco uproszczone):
// option 1
function isString(value) {
return (typeof value === 'string') ||
/^function String\(\)/.test(value.constructor + '');
}
lub
// option 2
function isString(value) {
return (typeof value === 'string') ||
(value.constructor === String);
}
lub
// option 3
function isString(value) {
return (typeof value === 'string') ||
value instanceof String;
}
tam jest "najlepszy" sposób, aby przejść na ten temat ? A może wszystkie są równoważne?
Neat, nie wiedziałem, że (przynajmniej ja nigdy nie myślał o tym;) Czy naprawdę nie odpowiedzieć na pytanie, choć. – n3rd
@ n3rd: Jak nie jest to odpowiedź na pytanie inne niż to, że nie jest jedną z trzech istniejących opcji? – BoltClock
+1. Właśnie miał to opublikować. Czy jednak te podklasy chwytające (wstrzymujące) Stringa? – Skurmedel