2016-12-05 81 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.