Wat is de juiste term hiervoor: "JavaScript-object vol met functies"?

Ik gebruik dit soort programmeerpatronen de laatste tijd om logisch gerelateerde functies te groeperen:

FruitMethods = {
    url: "some/path/to/something.durk",
    get: function(data) {$.ajax(url, data)},
    delete: function(something) { some more function stuff....}
}

Heb je de foto goed? Het lijkt niet echt te voldoen aan de definitie van een klasse ... of toch? Een Mixin? Iets anders? Javascript-object vol functies en misschien een variabele? JOFOFAMAV?

Mijn stem als voor JOFOFAMAV.

PS: Voel je ook vrij om mee te praten met je gedachten over de vraag of dit een goede gewoonte is.

1
misschien is namespace/module het woord waar je naar op zoek bent :)
toegevoegd de auteur sled, de bron
Ik zou het een object noemen. Het is wat het is. Je weet het waarschijnlijk al, maar JavaScript heeft geen klassen. Dat gezegd hebbende, je kunt ze (logisch) nabootsen.
toegevoegd de auteur Thomas Eding, de bron

3 antwoord

Functioneel gezien is het een object met eigenschappen. Dus, dan komt je vraag meer over welke algemene naam je zou noemen.

Omdat het geen instantiegegevens heeft en niet lijkt alsof er nieuwe exemplaren van worden gemaakt (bijv. Als een klasse), dan is het het meest op een naamruimte dat slechts een benoemde wrapper is voor een tros van eigenschappen waar eigenschappen elk soort gegevens of functies kunnen zijn.

Namespace-objecten zijn om verschillende redenen nuttig:

  1. Limiting the use of the top level, global namespace thus lowering the chance of a name conflict with other scripts.
  2. An organizational structure/convention for collecting a group of related data or functions.
  3. A hierarchical scheme that makes it easier for categorizing or organizing methods and/or data and referring to them with a simple scheme of category.method like Fruit.get()
3
toegevoegd

Ik zou dat een naamruimte noemen.

1
toegevoegd

Dat is een vorm van singleton - die in feite een object is zonder een externe definitie: je hebt geen 'class'definitie en vervolgens instanties van die klasse.

Een ding om te weten over dit type structuur is dat alle methoden van het object openbaar zijn (dat kan al dan niet een probleem zijn).

0
toegevoegd