2016-12-05 117 views
-2

我已經在javascript中實現了單例模式。單例模式的實現

它有如下,

var Student = (function(){ 
    var obj = {}; 
    return { 
     getInstance : function(){ 
      return obj; 
     } 
    } 
})(); 

var student1 = Student.getInstance(); 

student1.name = "Mejam Kinavchisko"; 

var student2 = Student.getInstance(); 
student2.age = 23; 

console.log(student1.name); 
console.log(student2.name); 
console.log(student2.age); 
console.log(student1.age); 

輸出如下,

Mejam Kinavchisko 
Mejam Kinavchisko 
23 
23 

在上面的例子中,你可以對給定實例看看我是否增加新屬性「名」和分配 一些值,同樣反映在另一個實例中。

即student1和student2指向相同的對象。

因此,我不會知道,如果我已經在JavaScript中實現Singleton模式?

+0

相同的值反映因爲對象是通過引用傳遞。所以在現實中,'Stugent.getInstanceOf'將返回一個位置,然後覆蓋該位置的對象 – Rajesh

+0

您期待什麼樣的答案?一個簡單的「是/否」? –

回答

0

Singleton模式因此是已知的,因爲它將類的實例化限制爲單個對象。通常情況下,Singleton模式可以通過創建一個類來創建一個類的新實例(如果不存在的話)。在已經存在的實例中,它只是返回對該對象的引用。

這裏創建的兩個對象的引用是相同的,因此Singleton行爲。

關於更多詳細的想法,你應該閱讀Addy Osmani's guide to Javascript Design Patterns.