Frage

Ich habe Probleme mit der Bestellung meines Codes in meinem Programm. jetzt habe ich mit ein paar Dinge in document.ready(function() { } ); und einige Dinge aus der Seite davon. Jedes Mal, wenn ich etwas bewegen (zu organisieren oder meinen Code zu verbessern) ich am Ende etwas zu brechen, ich bin zu raten, weil entweder die Reihenfolge der Erklärungen oder Zugriffsebenen (dh., Etwas außerhalb von document.ready(function {}); kann nicht etwas Zugang im Innern.

Wer noch keine Einsicht darüber, wo Dinge sollten Sie Javascript weise befinden?

Wenn alles innerhalb document.ready(function() {}); sein?
Gibt es einen Grund, etwas außerhalb von document.ready(function() {}); zu haben? Was ist der Code innerhalb document.ready(function() {}); unzugänglich durch äußere Code?

War es hilfreich?

Lösung

  

1. Sollte alles in seinem   document.ready (function () {});?

Nein, ich glaube, dass die document.ready Funktion nur Dinge zu initialisieren sein muß, Event-Handler zuweisen und so weiter.

  

2. Gibt es einen Grund zu haben,   etwas außerhalb von   document.ready (function () {});?

Code-Wiederverwendung und bessere Code-Organisation.

  

3. Ist der Code in   document.ready (function () {});   unzugänglich durch äußere Code?

Ja, die Variablen und Objekte auf dem document.ready erstellt unzugänglich sind von dem äußeren Umfang.

Andere Tipps

Sollte alles sein innerhalb document.ready (function () {});?

Ja und nein. In großem Umfang JavaScript-Anwendungen, initialisieren ich meine Haupt-Controller in den globalen Bereich von diesem Event-Handler. Allerdings gibt es Code, der nicht zu warten braucht für das DOM bereit sein, im Einzelnen: Code, der auf dem DOM nicht verlassen . Ich denke, das ist ziemlich geradlinig. Zum Beispiel erkläre ich Konfigurationsobjekte Klassen, Funktionen, usw. außerhalb dieser Event-Handler.

Gibt es einen Grund, etwas zu haben, außerhalb von document.ready (function () {});?

Sicher, aus dem Grunde, ist oben berührt. Hauptsächlich Code, wartet nicht DOM-Interaktion erfordern sollte nicht für das DOM, lädt vor allem, wenn es asynchron zum DOM Laden ausführen kann (z .: Funktionsdefinitionen, Konfigurationsobjekte, etc).

Auch ohne den gesamten Code in einer Ereignisbehandlungsroutine hält die Dinge besser organisiert, ermöglicht es Ihnen, Code modularisieren, verwenden Sie geeignete Entwurfsmuster etc.

Ist der Code in document.ready (function () {}); unzugänglich durch äußere Code?

Auch hier ja und nein. Wenn Sie es als lokal mit var erklären dann ist es ja, ist es unzugänglich durch den äußeren Umfang, wie es an den Ereignishandler lokal ist; sonst ist es im globalen Bereich und ist auf den äußeren Umfang zugänglich. Hier ist ein Beispiel (hosted hier: http://jsbin.com/uriqe )

JavaScript

var foo = function() {
  alert(global);
  return false;
}

$(document).ready(function() {
  global = "you can see me!?";
  alert("global is initiated");
});

HTML

<body>
  <p><a href="#" onclick="foo()">click me</a></p>
</body>

onclick eher als unauffällige Methode Ereignis Befestigung in $(document).ready() absichtlich irgendwelche Fragen / Argumente über foo Zugang zu vermeiden, verwendet wird, über die Schließung Eigenschaft global.

Edit: Ich dachte, ich habe es im vorhergehenden Satz klar, aber onclick verwendet wird absichtlich Verwirrung zwischen dem globalen Reichweite und der Schließung Eigentum zu vermeiden, aber Ich bin nicht die Verwendung von onlick befürwortet . natürlich ist es eine schlechte Praxis und Sie sollen es nicht werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top