Jak wykryć, czy zmienna jest ciągiem?jak wykryć, czy zmienna jest ciągiem znaków
Odpowiedz
Jest to sposób określony w specyfikacji ECMAScript w celu określenia wewnętrznej właściwości [[Klasa]].
if(Object.prototype.toString.call(myvar) == '[object String]') {
// a string
}
From 8.6.2 Object Internal Properties and Methods:
wartość w [[Klasa]] wewnętrzną właściwość określa się w niniejszym opisie dla każdego rodzaju wbudowane w przedmiot. Wartość właściwości wewnętrznej [[Class]] obiektu hosta może być dowolną wartością ciągu, z wyjątkiem jednego z "Argumenty", "Array", "Boolean", "Date", "Error", "Function", "JSON "," Math "," Number "," Object "," RegExp ", i " String ". Wartość właściwości wewnętrznej [[Class]] jest używana wewnętrznie do rozróżniania różnych rodzajów obiektów. Zauważ, że ta specyfikacja nie zapewnia żadnych środków dla programu, aby uzyskać dostęp do tej wartości, z wyjątkiem poprzez Object.prototype.toString (patrz 15.2.4.2).
Na przykład, jak to jest przydatne, należy rozważyć następujący przykład:
var str = new String('some string');
alert(typeof str); // "object"
alert(Object.prototype.toString.call(str)); // "[object String]"
Jeśli używasz typeof
, można dostać "object"
.
Ale jeśli użyjesz powyższej metody, otrzymasz poprawny wynik "[object String]"
.
nie wiesz, dlaczego jest to zaakceptowana odpowiedź. obiekty nie są łańcuchami. 'new String()' powoduje, że obiekt zawiera szereg indeksowanych właściwości, z których każda ma wartość odpowiadającą znakowi w tej pozycji. Tak, zostanie przekształcone w ciąg znaków za pomocą metody 'to' ciągnięcia' obiektu, ale faktem jest, że 'nowy ciąg ('jakiś ciąg')' nie jest łańcuchem sam w sobie. 'typeof someString ===" string "' jest poprawnym sposobem określenia, czy zmienna jest łańcuchem. To, czy zmienna może być * przekształcona w * ciąg, jest dyskusyjne; każdy obiekt, który może wyśledzić swój prototypowy łańcuch do 'Object' ma' toString' – jackwanders
Możesz użyć do tego celu typeof
, ale w wielu przypadkach jest to zły projekt.
if (typeof myVar == "string") {
alert("I'm a string!");
}
Co to jest dobry projekt? – Webnet
Zależy od tego, co próbujesz zrobić. Zazwyczaj powinieneś wiedzieć, jaki typ odbierasz lub nie powinno to mieć znaczenia (tzn. Będziesz robić to samo, niezależnie od typu). –
jak korzystać z isNaN()? –
typeof('yourstring');// returns string
Użyj typeof.
if (typeof foo == 'string')
Prawdopodobnie jaśniejszy nie używać słów kluczowych jako zmiennych w przykładach. – crdx
Stosować alert(typeof "hello");
alert(typeof 123);
Ref .: here.
var str = new String("some string");
if(str.constructor.name === "String")
{
alert("I'm a string!");
}
lub po prostu:
if(str.constructor === String)
{
alert("I'm a string!");
}
Nie sądzę, musimy traktować new String('some string')
jako ciąg, bo jeśli spróbujemy:
new String('abc')==='abc'
To będzie return false!
Ale jeśli spróbujemy:
String('abc')==='abc'
To zwróci true.
('str'.constructor === String) && alert('its a string!');
- 1. nie może wykryć, czy istnieje zmienna Session
- 2. IOS: sprawdź, czy ciąg znaków jest pustym ciągiem
- 3. Czy możliwe jest odniesienie do zmiennej z interpolowanym ciągiem znaków?
- 4. Jak sprawdzić, czy zmienna jest liczbą całkowitą lub łańcuchem?
- 5. jaka jest różnica między ciągiem znaków [] a ciągiem znaków w języku golang?
- 6. Jak wykryć, kiedy zmienna zmienia wartość
- 7. Sprawdź, czy wejście jest listą/krotką ciągów znaków lub pojedynczym ciągiem znaków
- 8. Sprawdź, czy zmienna jest datą z Twig
- 9. Wykryj, czy zmienna jest obiektem datetime
- 10. wykryć, czy obiekt jest pusty
- 11. Różnica między ciągiem binarnym, ciągiem bajtowym, ciągiem unicode i zwykłym ciągiem znaków (str)
- 12. Jak wykryć, czy moja aplikacja jest piaskownica?
- 13. Jak wykryć, czy produkt zapory jest włączony?
- 14. Jak wykryć, czy zdjęcie jest plakatem (nierealne)?
- 15. Nodejs, jak wykryć, czy moduł jest dołączony
- 16. Jak wykryć, czy ukierunkowany wykres jest cykliczny?
- 17. Jak wykryć, czy klawiatura powierzchni jest dołączona?
- 18. Jak wykryć, czy klawiatura użytkownika jest Swype?
- 19. Jak wykryć, czy głośność jest wyciszona?
- 20. Jak wykryć, czy karta Chrome jest uszkodzona?
- 21. Jak wykryć, czy Daydream jest włączony?
- 22. Jak sprawdzić, czy typ jest ciągiem w języku C#?
- 23. Jak wykryć, czy pamięć jest ze stosu? (nie sterty lub zmienna statyczna)
- 24. Jak sprawdzić, czy zmienna wyliczeniowa jest ważna?
- 25. Jak sprawdzić, czy zmienna jest obiektem Moment.js?
- 26. PHP Jak sprawdzić, czy zmienna jest odniesieniem?
- 27. Różnica między ciągiem odczytywanie a ciągiem znaków w Clojure
- 28. Jaka jest różnica między ciągiem znaków w kodzie źródłowym a ciągiem odczytanym z pliku?
- 29. Sprawdź, czy wartość jest ciągiem w Coldfusion
- 30. Sprawdź, czy zmienna jest tablicą
Możesz użyć underscore.js, ma metody dla tego wbudowanego http: //documentcloud.github.com/underscore/# isString - w przypadku isString używa metody wymienionej przez user113716 –
możliwy duplikat [Sprawdź, czy zmienna jest ciągiem znaków] (http://stackoverflow.com/questions/4059147/check-ifa-a- variable-is-a-string) – pkyeck
możliwy duplikat [Sprawdź, czy zmienną jest liczba lub ciąg znaków w javascript] (http://stackoverflow.com/questions/1303646/check-whether-variable-is-number- or-tring- in-javascript) – Flimzy