2017-03-29 1 views
0

In Sequelize gibt es eine Methode einen Datenbankeintrag mit Bezug auf ein Modell zu erstellen, zum Beispiel:methodObject Notation in JavaScript-Bibliotheken (z Reagieren und Sequelize)

user.createPost({...}) 

der zu instance.methodInstance beträgt. Ich dachte, dass die "createPost" -Notation eine Besonderheit von Sequelize sei, aber dann stieß ich auf React. In Reagieren Sie eine Komponente wie so definieren:

function Square(props) { 
     return ( 
     <button className="square" onClick={() => props.onClick()} > 
      {props.value} 
     </button> 
     ); 
    } 

Eine weitere Komponente, die so machen kann:

class Board extends React.Component { 
    renderSquare(i) { 
    return <Square />; 
    } 

Jetzt haben wir die „renderSquare“ Notation, die methodClass beträgt. Ist das eine Java-Syntax, die mir nicht bekannt ist, oder ist es ein Zufall, dass diese beiden Bibliotheken einen ähnlichen Stil haben?

So frage ich mich, ob ein Verfahren zu schreiben und ein Objekt in Kamel Fall verketteten statt der (üblichen) objekt.methode Syntax Standard JavaScript-Syntax.

Antwort

1

JavaScript hat sich lächerlich schnell entwickelt - bis zu einem Punkt, an dem die Dinge ein wenig verwirrend werden können. Vor ES6 gab es kein class Schlüsselwort in JS. Aber Sie können dieselben Ergebnisse erzielen, indem Sie eine Funktion erstellen und über den Prototyp Methoden hinzufügen.

viele Entwickler, vor allem die auf Java/C# verwendete, konnte der Prototyp nicht verstehen. ES6 hat einige Syntax-Sugar erstellt, um Klassen als Old-School-OOP-Stil zu deklarieren - deshalb sieht das zweite Beispiel "java-esque" aus. Und ich muss zugeben - ich liebe die neue Syntax. So viel klarer.

Also, das ist alles, was es ist - Sie können tatsächlich verwenden, was auch immer Sie bevorzugen. Bedenken Sie, dass bei react eine Komponente, die im Grunde eine einzige Funktion (kein Konstruktor) ist, stateless ist und minimale Logik implementiert - die Art von Komponente, die im Grunde nur etwas vereinfacht. Für etwas komplexeres sollten Sie eine Stateful-Komponente verwenden - entweder ES6-Klassen oder reguläre ES5 mit .

Es gibt eine gute Führung hier, dass die meisten erklärt, was Sie wissen müssen, wenn es gegen ES5 bis ES6 kommt Reagieren Code: https://facebook.github.io/react/docs/react-without-es6.html