Dies ist aufgrund der sich überlappenden Schlüsselsuchbegriffe wirklich schwierig zu finden. Ich habe dieses Schaltspiel, das ich mache. FYI, in Bezug auf Stil, verwende ich Großbuchstaben Namen für Objekte, die, obwohl sie ein wenig ändern können (wie, number_of_boards
oder etwas), nicht für andere Dinge wiederverwendet werden, aber die Eigenschaftsnamen werden wiederverwendet (zum Beispiel wenn ich auf der einen Seite meine keltischen Knoten Generator und Schaltungen Spiel hatte, hätte ich KNOT.draw
und CIRCUIT_BOARD.draw
)Objektkonstruktor als Funktion in einem größeren Objekt
So, hier ist die kurze Version meiner aktuellen Set up:
CIRCUIT_BOARD = {
"blankGridSquare": function(){
//Returns brand new object that is one blank grid square of the map
}
, "blankMap": function(width,height){
//Returns brand new object that has a bunch of blank grid squares
}
, "copyMap": function(map){
//Returns new object with the same value as parameter map
}
, "newBoard": function(svg,width,height,ioPlugs,map){
//Returns new object with a target svg,
//either a blank map or a copy of the given map,
//a set of ioPlugs,
//the electric current set up,
//etc.
//Initializes a few other things
}
// and other functions of course...
}
ich will nicht werde alle Funktionen in eine Variable umwandeln, weil ich die Flexibilität haben möchte, mehrere Spiele auf einer Seite zu platzieren. Ich habe gelesen, dass die korrekte Erstellung von Konstruktoren die Verwendung des Schlüsselwortes this
beinhaltet. Aber wenn ich versuche, this
für diese Konstruktoren zu verwenden, bekomme ich zum Beispiel eine Karte mit einer Reihe von Funktionen, an denen jeder einzelne gridSquare mit all diesen Funktionen verbunden ist.
Die Frage ist also, wie mache ich mehrere Objektkonstruktoren als nicht instanzgebundene Funktionen, die alle Eigenschaften eines anderen Objekts sind? Ich weiß nicht einmal, ob diese verdichtete Frage richtig formuliert ist.
Wenn Sie 'neue CIRCUIT_BOARD.someFunction()' aufrufen, dann wird der Wert von 'this' in diesem Aufruf ein neues Objekt sein. Wenn Sie 'new' nicht vor dem Aufruf verwenden, ist der Wert von' this' das 'CIRCUIT_BOARD'-Objekt selbst. – Pointy
Also, wenn ich 'neue CIRCUIT_BOARD.blankGridSquare' innerhalb der" blankMap "-Funktion verwenden, sollte es mir nur das beabsichtigte leere Quadrat ohne fremde Funktionen geben? ... Testen Sie jetzt ... – RoboticRenaissance
Vielen Dank, Pointy. Genau das habe ich gebraucht. Beim nächsten Mal sollten Sie Informationen wie diese in eine Antwort einfügen. Ich hätte es akzeptiert, sobald ich es getestet hatte. – RoboticRenaissance