作家
登录

JavaScript 设计模式学习 Singleton

作者: 来源:www.28hudong.com 2013-03-30 02:26:33 阅读 我要评论

复制代码 代码如下: /* Basic Singleton. */ var Singleton = { attribute1: true, attribute2: 10, method1: function() { }, method2: function(arg) { } }; 单件模式最主要的用途之一就是命名空间: /* GiantCorp namespace. */ var GiantCorp = {}; GiantCorp.Common = { // A singleton with common methods used by all objects and modules. }; GiantCorp.ErrorCodes = { // An object literal used to store data. }; GiantCorp.PageHandler = { // A singleton with page specific methods and attributes. }; 利用闭包在单件模式中实现私有方法和私有变量: GiantCorp.DataParser = (function() { // Private attributes. var whitespaceRegex = /s+/; // Private methods. function stripWhitespace(str) { return str.replace(whitespaceRegex, ''); } function stringSplit(str, delimiter) { return str.split(delimiter); } // Everything returned in the object literal is public, but can access the // members in the closure created above. return { // Public method. stringToArray: function(str, delimiter, stripWS) { if(stripWS) { str = stripWhitespace(str); } var outputArray = stringSplit(str, delimiter); return outputArray; } }; })(); // Invoke the function and assign the returned object literal to // GiantCorp.DataParser. 实现Lazy Instantiation 单件模式: MyNamespace.Singleton = (function() { var uniqueInstance; // Private attribute that holds the single instance. function constructor() { // All of the normal singleton code goes here. ... } return { getInstance: function() { if(!uniqueInstance) { // Instantiate only if the instance doesn't exist. uniqueInstance = constructor(); } return uniqueInstance; } } })(); MyNamespace.Singleton.getInstance().publicMethod1();

  推荐阅读

  JavaScript 学习小结(适合新手参考)

常量:JavaScript常量又称字面常量,是固化在程序代码中的信息。 变量:变量的主要作用是存取数据,提供一个存取信息的容器。 数据类型 整型:整型常量就是数字,可以是十进制、八进制、十六进制。 字符串>>>详细阅读


本文标题:JavaScript 设计模式学习 Singleton

地址:http://www.17bianji.com/kaifa2/JS/28345.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)