24 Stimmen

JavaScript - Funktion als Objekteigenschaft

Hey everyone, this is #23 from John Resig Advanced JavaScript http://ejohn.org/apps/learn/#23, called

Was passiert, wenn eine Funktion eine Objekteigenschaft ist.

1) In Bezug auf die Vokabeln, ist die Variable katana das Objekt, richtig? Wenn die anonyme Funktion seine Eigenschaft ist, was ist dann "use"? Ich dachte, "use" wäre auch eine Eigenschaft genannt worden? Oder ist "use" auch ein Objekt, weil es einen Wert enthält, nämlich eine Funktion?

2). Ist der Zweck der Funktion, isSharp: true in isSharp: false zu ändern? Was genau tut !this.isSharp?

3) Wenn es !katana.isSharp behauptet, was behauptet es tatsächlich? dass isSharp jetzt auf "false" gesetzt wurde?

var katana = {
  isSharp: true,
  use: function(){
    this.isSharp = !this.isSharp;
  }
};
katana.use();
assert( !katana.isSharp, "Überprüfen Sie den Wert von isSharp wurde geändert." );

28voto

Cameron Punkte 91138
  1. Ja, katana ist ein Objekt (erstellt mit der Notation { ... }). "use" ist der Name des Eigenschaft des Objekts, dessen Wert die anonyme Funktion sein wird (die auch ein Objekt ist).

  2. Die Funktion kehrt den Wert von isSharp um (also von true zu false oder von false zu true).

  3. Es wird behauptet, dass isSharp etwas ist, das nicht zu true ausgewertet wird (das ist fast alles außer undefined, null, false, 0, usw.). In diesem Fall, da isSharp immer entweder true oder false ist, wird behauptet, dass es false ist.

Der Hauptpunkt (und der coole Teil) des Beispiels ist diese Zeile:

katana.use();

Zuerst wird der Wert der Eigenschaft "use" vom Objekt katana abgerufen (das ist der Teil katana.use). Der Wert ist die anonyme Funktion von vorher. Dann wird diese Funktion ausgeführt (das ist der Teil ()). Der wirklich coole Teil ist, dass sie im Auftrag des katana Objekts ausgeführt wird -- das bedeutet, dass this in der anonymen Funktion ein Verweis auf das katana Objekt ist, wenn es auf diese Weise aufgerufen wird.

1voto

Raynos Punkte 162170

1) Katana ist ein Objekt. Katana.use ist eine Funktion. Es ist eine Eigenschaft, die eine Funktion als Wert enthält. Der Wert, den sie enthält, ist zufällig eine anonyme Funktion.

Der Unterschied besteht darin, dass Katana.use eine Eigenschaft von Katana ist und dass der Wert von Katana.use eine Funktion ist. use ist ein Schlüssel, der auf Katana definiert ist, da auch Katana["use"] funktioniert.

2) Es setzt isSharp auf NICHT isSharp, entweder true -> false oder false -> true.

3) Die Behauptung besagt, dass katana.isSharp === false, was auch der Fall sein sollte, da es ursprünglich true war, dann jedoch auf false gesetzt wurde.

1voto

Arun P Johny Punkte 375950
  1. use ist eine Eigenschaft des Objekts katana.
  2. !this.isSharp negiert den Wert von this.isSharp. Beispiel: Wenn isSharp wahr ist, wird false zurückgegeben, sonst wird false zurückgegeben.
  3. Das assert überprüft, ob das Ergebnis des booleschen Ergebnisses wahr ist. Wenn das Ergebnis falsch ist, schlägt die Überprüfung fehl.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X