Гарантированный Singleton на JavaScript
Вспомнился мне паттерн Singleton, и я подумал — «А почему бы не сделать так?».
- function a(){ // a.constructor = Function()
- var property;
- this.property = function(value){
- if (value) {
- property = value;
- return property;
- } else {
- return property;
- }
- }
- }
-
- a = new a(); // a.constructor = a()
- var b = new a(); // Error: a is not a constructor
Объект есть со всеми его вкусностями вроде сокрытия реализации, а конструктора нет.
P.S. Проверял в FF (3.6, 3.5, 3.0, 2.0), Chrome 4, Safari 4, Opera (10.10, 9.64, 9.0), и IE (8, 7, 6).