Ich bin ein Hobby-Programmierer, habe mehrere Sprachen studiert und finde fast immer, dass "Länge" eine Methode / Funktion ist. Ich habe gelernt, dass jeder Methodenaufruf mit einer Klammer aufgerufen werden muss, auch ohne Argumente.
Nicht so in Javascript .... Warum?
C # .länge () ROR .lenth ()
usw. ...
In Javascript ist es eine Eigenschaft, keine Funktion.
In Sprachen wie C, wo die Längenfunktion den gesamten String durchlaufen muss, um das Ende zu finden, ist es logisch, es als Funktion zu haben (da es etwas Arbeit macht). In Sprachen, in denen die Länge als separater Wert beibehalten wird, ist es logisch, sie als Eigenschaft zu verwenden (da nur ein bereits vorhandener Wert gelesen wird).
Es ist, weil es eine Eigenschaft ist, keine Funktion.
Sie finden die entsprechende Dokumentation hier im MDN .
Diese Eigenschaft gibt die Anzahl der Code-Einheiten in der Zeichenfolge zurück.
Weil es ein bekannter Wert für das Objekt (eine Eigenschaft) ist und keine Funktion, die ausgewertet werden muss.
In% ist .length
eine Eigenschaft des Arrays, keine Funktion des Prototyps. Stellen Sie sich vor, Ihr Array wird wie folgt dargestellt:
Das ist offensichtlich Unsinn, aber der Punkt ist, dass .length
eine Eigenschaft des Array-Objekts ist, keine Funktion davon, also braucht es keine nachgestellten Klammern.
In JavaScript ist .length
eine Eigenschaft und verhält sich wie eins:
Beachten Sie, dass Sie nicht nur den Wert der Eigenschaft lesen, sondern auch schreiben können.
Übrigens, In C # sind normalerweise .Length
oder .Count
Eigenschaften, keine Methoden:
String.Length
Array.Length
List<T>.Count
Linq macht eine Count()
Methode für IEnumerable<T>
verfügbar, aber das ist eine relativ neue Ergänzung.
Es gibt viele Sprachen, in denen Eigenschaften durch Methodenaufrufe einschließlich JavaScript gesichert werden können. Es liegt an den Herstellern, zu entscheiden, wie sie umgesetzt werden.
Sie können Ihre eigenen Eigenschaften durch Funktionen unterstützen lassen. Ich habe bereits eine ähnliche Frage beantwortet, also werde ich es hier nicht wiederholen.
Ruby benötigt auch keine Klammern nach einem Methodenaufruf. Dies ist ein gültiger Ruby-Code
%Vor%Python hat auch das Konzept der funktionsbasierten Eigenschaften. Hier ist ein Beispiel in Python:
%Vor%Klammern sind nur Syntax und wurden traditionell für Funktions- / Methodenaufrufe verwendet, aber es ist kein universeller Standard.
Tags und Links javascript