function Single(){
if(Single.caller !== Single.getInstance){
throw new Error("new ile çalıştırılamaz");
}
this.dt = new Date();
}
Single.getInstance = function() {
// Single sınıfına ait instance static özelliği yaratılmadan önce
console.dir(this);
debugger;
if(this.instance === undefined){
// this tanımı doğrudan sınıfı yani Single fonksiyonunu işaret edecektir
this.instance = new Single();
// Single sınıfının instance static özelliği yaratıldı
// Ve bundan sonra bir daha yaratılmayıp sınıfa bağlı instance nesnesi gönderilecek
console.dir(this);
}
return this.instance
}
// Single sınıfının static fonksiyonu olan getInstance üstünden tekil nesne çağırılır
a = Single.getInstance();
// new Anahtarıyla Single sınıfından bir nesne tanımlanamaz
a = new Single();Peki node.js içinde nasıl olurdu? Unutmamalı ki require ile çağırdığımız tüm js dosyaları memorye bir kez yüklenir ve her require ile çağrıldığında artık file i/o yapmak yerine bellekten getirilir. Ve biz objemizi bir kez module.exports içine koydukmu bir daha yaratmak durumunda olmayız. Yukarıdaki kodu single.js olarak sakladığımızı düşünelim.
single.js
module.exports = Single.getInstance()çağırdığımız dosya.js olsun:
module.exports = require('./single.js')
