2013-03-01 13 views
7

Czego szukam, w jaki sposób ciągi są fizycznie traktowane w JavaScript. Najlepszym przykładem mogę myśleć o co mam na myśli to, że w Java API opisuje przechowywanie ciągów jak:W jaki sposób są fizycznie przechowywane ciągi w JavaScript

String str = "abc";" is equivalent to: "char data[] = {'a', 'b', 'c'};

Dla mnie to mówi, że używa obiektu tablicy i zapisuje każdy znak jako własnego obiektu do użycia/uzyskania dostępu później (zwykle jestem w błędzie!) ...

Jak działa Javascript?

+1

staje się obiektem typu String, ale można również uzyskać znaki jako tablicę: 'var str =" Hello "; console.log (str [0]); // pokazuje "H" ' – kennypu

+0

są one" fizycznie "przechowywane, są oczywiście zapisane cyfrowo. podczas gdy możesz użyć dostępu do tablicy [], aby uzyskać indywidualne znaki, łańcuchy nie są tablicami lub znakami w javascriptu, nie ma typu char, a łańcuch nie ma metod związanych z manipulowaniem tablicą. – mpm

Odpowiedz

3

Struny są String objects w JavaScript. Obiekt String może użyć notacji [], aby uzyskać znak z ciągu znaków ("abc"[0] zwraca 'a'). Możesz także użyć funkcji String.prototype.charAt, aby osiągnąć ten sam rezultat.

węzeł boczny:var a = 'abc' i var b = new String('abc') nie są takie same. Pierwszy przypadek nazywa się ciągiem pierwotnym i przekształca się w obiekt String przez analizator składni JavaScript. Powoduje to inne typy danych, wywołanie typeof(a) daje string, ale typeof(b) daje object.

+0

Dzięki wszystkim - kilka dobrych odpowiedzi - więc jak wygląda każdy znak w ciągu JavaScript - czy ciąg znaków nadal jest tablicą "znaków" w JS, jak w Javie? – user1360809

+0

nie, to tylko ciąg znaków. Może być tak, że ciąg jest zapisywany jako tablica wewnątrz obiektu String, co umożliwia iterację, ale nie wiem, czy to prawda (moja znajomość parsera JS nie jest tak daleko ...) –

+0

Dzięki - Czy ktokolwiek może zaoferować jakieś informacje? – user1360809

0

Ciągi są przechowywane w tym samym formacie w javascript jak inne magazyny języków. Załóżmy, że słowo var = "test" niż na słowo będzie tablicą znaków, a "t" pojawi się na pozycji 0 i tak dalej.

Ostatnia iteracja jako przyjęcie "word.length" zwróci undefined. W innych językach zwraca wartość "\ 0".

Powiązane problemy