JavaScript面向对象编程之Singleton类

简介:
    在C#、Java等纯面向对象的语言中,合理使用设计模式将会使我们的模块设计和代码编写更加健壮和清晰。目前JavaScript的编写已经从自身的object-based,被逐渐模拟来很象(至少七八分吧)object-oriented的语言了,所以我们也可以遵照一些设计模式的概念来编写JS代码。

    单态(Singleton)是设计模式中最简的模式了,所以我们先拿它开刀。关于什么是Singleton,可以简单参看 Implementing the Singleton Pattern in C#,要系统了解属于就属于设计模式的范畴了,不是本文要讲解的内容。

    不过对于C#,当然也包括Java等其它纯面向对象语言,由于其类的构造函数(constructor)不是一个普通的函数(不能自定义其返回值),所以它们在编写Singleton类时都需要使用一个 static的属性或方法来获取对象的实例。而JavaScript中类的constructor就是一个普通的函数,我们可以改变它的返回值来实现对象实例的返回,而不依赖于语言机制。这是到底是什么意思呢  先看一下JS的Singleton类的实现就明白了,示例代码如下:
< script  language ="javascript" >
function  Singleton()
{
    
//  template code for singleton class.
     if  (  this .constructor.instance )
    
{
         
return   this .constructor.instance;
    }
 
    
else   this .constructor.instance  =   this ;
    
/**/ // ///////////////////////////////
    
    
this .value  =  parseInt(Math.random() * 1000000 );
   
    
this .toString  =   function ()
    
{
         
return  '[class Singleton]';
    }

}


Singleton.prototype.GetValue 
=   function ()
{
    
return   this .value;
}
;

Singleton.prototype.SetValue 
=   function (value)
{
    
this .value  =  value;
}
;
</ script >

    前面说的"改变它的返回值来实现对象实例的返回",就是指的在JavaScript类的constructor类可以 return this.constructor.instance;。所以JavaScript实现的Singleton类在使用时只管 new就行了,而不用使用ClassName.Instance或ClassName.GetInstance()这样的语法。

    类Singleton的测试代码如下:
  var singleton =  new Singleton();
 alert(__typeof__(singleton));
 alert(singleton.GetValue());
  var singleton =  new Singleton();
 alert(singleton.GetValue());
 singleton.SetValue(1000000);
  var singleton =  new Singleton();
 alert(singleton.GetValue());
  var singleton =  new Singleton();
 alert(singleton.GetValue());

    返回结果为:Singleton,586606,586606,1000000,1000000。第二个和第三个是random出来的,反正肯定是一样的两个数(__typeof__的实现来自这里:获取JavaScript用户自定义类的类名称)。


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
4月前
|
Web App开发 JavaScript 前端开发
JavaScript 类(class)
JavaScript 类(class)
30 2
JavaScript 类(class)
|
3月前
|
JavaScript 前端开发 Java
JavaScript中的面向对象编程(OOP) - 终极指南
本文介绍了 JavaScript 的面向对象编程 (OOP) 概念,包括继承、多态、封装和抽象等关键要素,并通过代码示例帮助开发者理解和应用 OOP 思维。
45 5
|
4月前
|
JavaScript 前端开发
JavaScript基础知识-构造函数(也称为"类")定义
本文介绍了JavaScript中构造函数(也称为“类”)的定义和使用方法。
45 1
JavaScript基础知识-构造函数(也称为"类")定义
|
4月前
|
JavaScript 前端开发 Java
js面向对象编程|24
js面向对象编程|24
|
4月前
|
JavaScript 前端开发 Java
JavaScript 类知识点概览
概览JavaScript中类的知识点,包括类的定义和实现、添加方法和get/set方法、类的继承和静态方法的使用。通过学生类和人员类的例子,演示了类的构造器、方法定义、继承关系和静态方法的调用。
JavaScript 类知识点概览
|
4月前
|
JavaScript 前端开发 开发者
JavaScript 类继承
JavaScript 类继承
24 1
|
4月前
|
JavaScript 安全
ES6中JS类实现的解读
ES6中JS类实现的解读
24 2
|
4月前
|
JavaScript 前端开发 索引
|
4月前
|
JavaScript 前端开发
JS中Promise的类式实现写法
JS中Promise的类式实现写法
|
3月前
|
前端开发 JavaScript 开发者
深入理解JavaScript中的对象与类
深入理解JavaScript中的对象与类
20 0