One more question wrt. private implementation. Is it enough if I name it say LocaleInfo.DateTimeFormat__ and not include it in the public API list in the proposal?
Looking around web I found ways to make things truly private, but there was price to pay (see http://stackoverflow.com/questions/55611/javascript-private-methods). 18. мај 2011. 17.55, Allen Wirfs-Brock <[email protected]> је написао/ла: > > On May 18, 2011, at 5:06 PM, Nebojša Ćirić wrote: > > > > > If I remove constructor LocaleInfo.DateTimeFormat where would I put > LocaleInfo.DateTimeFormat.prototype.format() method for example (I would > gladly remove the duplication, but I am not sure how)? Right now I do: > > > > LocaleInfo.prototype.dateTimeFormat(settings) { > > return new LocaleInfo.DateTimeFormat(settings, this); > > } > > > > and > > > > LocaleInfo.DateTimeFormat = function(settings, locale) { > > } > > > > does actual work of creating the new object. > > > Clearly I'm being sloppy by having first not read your entire API; but of > course actually developer also probably will jump in without reading > everything so may it isn't such a bad approach.... > > I would expect that the LocaleInfo instance you obtained (I'll call it > locale) has been instantiate for some specific "locale" (in quotes I mean > the abstract concept of some specific locale). In other words locale > encapsulates all the knowledge that is needed to perform operations in some > specific "locale" context. Part of that encapsulated knowledge is what kind > of DTF to use by default for that "locale" or how to selection from a set of > possible DTFs based upon requested settings. In practice you might only > have one "class" that implements DTF or you might have several but that > really is an implementation that should be hidden inside locale. > > I would then expect to see an implementation something like this: > > LocaleInfo.prototype.dateTimeFormat(settings) { > return new this.__internalDTFProvider(settings, this) > } > > Now that I have written this, I see the more concise answer: > > The concrete "class" that implements a specific DTF should be a private > implementation detail. It doesn't have to have a public constructor API > because the constructor is called from within the dateTimeFormat method. > The instances of such private DTF constructors support the public DTF > instance API. In other words that have methods such as format. The actual > implementation of format would hang-off of the prototype object associated > with such private DTF constructors. > > Here is a third way to state it: > > LocaleInfo is a constructor that has a public API that is used to create > (or access) LocaleInfo objects. > localeInfo instances have a public API (essentially the public properties > of LocaleInfo.prototype) that give access to various kinds of objects > including objects that support the DTF interface > DTF objects implement the DTF public API including format > The constructor(s) for DTF objects is an implementation detail and doesn't > need a public API > > allen -- Nebojša Ćirić
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

