Wouldn't you have to return the singleton instance?
initialize: function() {
if (!STUser._instance) {
STUser._instance = this;
this.getInstance(); // Actual instance contructor, sets up
variables etc.
}
return STUser._instance;
},
On Feb 4, 7:38 pm, Daff <[email protected]> wrote:
> Hi All,
>
> Have spent the last hour looking for a singleton class in prototype,
> with not a large amount of luck.
>
> Found a reasonable attempt by Jim Higgson at
>
> http://jimhigson.blogspot.com/2009/01/prototype-singleton-classes.html
>
> but didn't like the fact that if you called new again it threw an
> exception. To my mind, calling new should simply return the instance. I
> realise that this goes against the normal singleton design pattern which
> should be used with getInstance() rather than new, but as we can't make
> 'new' private as we would in other languages I felt that 'new' was the
> logical function to make sure it got the singleton instance (i.e. it is
> more likely to be used by others to create an object in Javascript and
> with no compile to warn you until runtime, it should 'just work').
>
> To make it work like that I have used the following code. Comments on
> anything that you don't like, or that might cause an issue would be
> appreciated.
>
> var STUser = Class.create(
> {
> initialize: function() {
> if (!STUser._instance) {
> this.getInstance(); // Actual instance contructor, sets up
> variables etc.
> }
> return this;
> },
>
> getInstance: function() {
> this._timePeriod = 120;
> },
>
> getTimePeriod: function() {
> return STUser._instance._timePeriod;
> },
>
> setTimePeriod: function(timePeriod) {
> STUser._instance._timePeriod = timePeriod;
> }
>
> });
>
> STUser._instance = new STUser();
>
> Tested with the following code...
>
> var user = new STUser();
>
> alert("User 1 Time = " + user.getTimePeriod());
>
> user.setTimePeriod(100);
>
> alert("User 1 Time = " + user.getTimePeriod());
>
> var user2 = new STUser();
>
> alert("User 2 Time = " + user2.getTimePeriod());
>
> Which worked as advertised,
>
> Appreciate any feedback, and wonder if I missed something out of
> prototype as was surprised there wasn't (or I couldn't find) a singleton
> pattern.
> --
> daff
> SOFTWARE ENGINEER
>
> andrew 'daff' niles | spider tracks ltd | 117a the square
> po box 5203 | palmerston north 4441 | new zealand
> P: +64 6 353 3395 | M: +64 21 515 548
> E: [email protected] <mailto:[email protected]>
> W:www.spidertracks.com<http://www.spidertracks.com>
--
You received this message because you are subscribed to the Google Groups
"Prototype & script.aculo.us" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en.