javascript 模式方面的学习

看了好多网上的文章,基本上得到一个结论:一些写类工具函数或框架的写类方式本质上都是 构造函数+原型

1.用构造函数来定义类属性(字段)。
2.用原型方式来定义类的方法。

具体文章请参阅

JavaScript的写类方式(1)

http://www.cnblogs.com/snandy/archive/2011/03/06/1971764.html

一、下面我们看一下单例模式

(1.)这个网站对单例模式是什么描述的

http://www.codingserf.com/index.php/2015/05/javascript-design-patterns-singleton/

在JavaScript里,单例模式(the Singleton Pattern)非常简单,简单到可以被忽略,但是它在技术层面是如何工作的,我们还是有必要了解一下的。单例的代码写在一个单独的对象里,因此你不需要去实例化一个新对象就可以在任何你需要的时候使用它的资源,单例允许在全局范围内访问它的资源。
在JavaScript里,我们常在管理命名空间时使用单例模式,它可以降低你在代码中创建全局变量的数量。单例模式在JavaScript里要比在其他语言中更有用,因为它可以用命名空间来降低全局变量所带来的风险。

一个基本的单例模式

这是一个最基本最简单的用JavaScript实现的单例模式。它就是一个简单的有一些方法和属性的对象字面量,假想它们是因为某种关系才被放到一起。

结论:使用单例模式管理命名空间非常简单。同样你可以仅仅通过创建一个对象字面量就搞定

(2.)这个网站对单例模式是什么描述的

http://frontenddev.org/link/javascript-design-mode-7-appearance.html

单例模式的意思是只需要实例化某个类一次,它的方法也比较简单,通过判断某个类是否已经被实例化了,再返回该值。可以通过各种方法来实现单例模式,

结论:在使用单例的模式我们可以考虑一下几点,以帮助你判断是否应该采用此模式构建你的项目:

  1. 当类只能由一个实例,并且它很容易从公共访问点对它进行访问时候。
  2. 该类的实例是可以通过子类化进行扩展的,并且客户无需更改代码就能使用一个扩展的实例的时候。

(3.)这个网站对单例模式是什么描述的

http://blog.chinaunix.net/uid-26672038-id-3886959.html

在应用单例模式时,生成单例的类必须保证只有一个实例的存在,很多时候整个系统只需要拥有一个全局对象,才有利于协调系统整体的行为。比如在整个系统的配置文件中,配置数据有一个单例对象进行统一读取和修改,其他对象需要配置数据的时候也统一通过该单例对象来获取配置数据,这样就可以简化复杂环境下的配置管理。

单例模式的思路是:一个类能返回一个对象的引用(并且永远是同一个)和一个获得该实例的方法(静态方法,通常使用 getInstance 名称)。那么当我们调用这个方法时,如果类持有的引用不为空就返回该引用,否者就创建该类的实例,并且将实例引用赋值给该类保持的那个引用再返回。同时将该类的构造函数定义为私有方法,避免其他函数使用该构造函数来实例化对象,只通过该类的静态方法来得到该类的唯一实例。

对于 JS 来说,巨大的灵活性使得其可以有多种方式实现单例模式,使用闭包方式来模拟私有数据,按照其思路可得:

实现1: 最简单的对象字面量

实现2:构造函数内部判断

实现3 : 闭包方式

(4.)又来了一个描述

http://www.cnblogs.com/yupeng/archive/2012/09/06/2673683.html

单例要求一个类有且只有一个实例,提供一个全局的访问点。因此它要绕过常规的控制器,使其只能有一个实例,供使用者使用,而使用着不关心有几个实例,因此这是设计者的责任

  In JavaScript, Singletons serve as a shared resource namespace which isolate implementation code from the global namespace so as to provide a single point of access for functions.

  在javascript中,单例被当做一个全局的命名空间,提供一个访问该对象的一个点。

看到这里我们大致可以总结出单例模式的有哪些特征:

有且只有一个实例,只需要拥有一个全局对象

实现方式大致有3种

1: 最简单的对象字面量

2:构造函数内部判断

3 : 闭包方式

时间: 2024-11-05 14:10:07

javascript 模式方面的学习的相关文章

《Javascript权威指南》学习笔记之十一:处理字符串---String类和正则表达式

一.正则表达式的基本语法 1.概念:正则表达式由普通字符和特殊字符(元字符)组成的文本模式,该模式描述在查找字符串主体时待匹配的一个或者多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 普通字符包括所有的大小写字母字符.所有数字.所有标点符号及一些特殊符号.普通字符本身可以组成一个正则表达式,也可以和元字符组合组成一个正则表达式:而元字符则具有特殊的含义,包括().[].{}./.^.$.*.+.?...|.-.?:.?=.?! 2.基本语法 3.优先权含义 二.使用

[JavaScript] 初中级Javascript程序员必修学习目录

很多人总感觉javascript无法入门,笔者在这里写一下自己的学习过程,以及个人认 为的最佳看书过程,只要各位能按照本人所说步骤走下去,不用很长时间,坚持 个3个月,你的js层级会提高一个档次,无他,唯有努力与坚持,请看: 1. 从头到尾对一遍<<Javascript高级程序设计>>,不懂的地方可以暂时掠过,给自己对javascript有一个大体的印象 2. 认认真真的读完这本书:<<编写可维护的javascript>>,从编码规范,技巧,模式,等各个方面

JavaScript匿名类整理学习

以下为总结在开源的JavaScript框架中能看到很多这样语法结构(function(){})()比如我最近看的jQuery,及chediter.刚开始的时候我看到这样的结果有点奇怪,它是怎么执行的,并且这是什么样的语法结构,最近偶尔看闭包的时候,才发现原来这是JavaScript种匿名函数(看到这个有点汗,java的匿名类见过,就从来没想到JavaScript中会有匿名函数,也是学的不够牢固).现在我们了解到以上是JavaScript匿名函数的语法结构,怎么声明函数,匿名函数JavaScrip

JavaScript模式

<JavaScript模式>一书看完一半了,越发感慨要精通JavaScript并非一夕一朝之事.先不说设计模式,就说JS的模块模式你真正掌握了么?这是成为一名架构师必备的基础.只是看书是很难掌握这些模式的灵活运用,需要实战,大量的实战.去什么地方实战呢,业务代码是很少有机会进行这个层面的实战的.思考了一些时日,这种实战最好的方法是研究相关的源码,underscore.js,sea.js,jQuery.js,vue.js,后两者都是近万行的代码量,先暂时不去研究,前两者是千行的代码量,可以放在今

初中级Javascript程序员必修学习目录

很多人总感觉javascript无法入门,笔者在这里写一下自己的学习过程,以及个人认为的最佳看书过程,只要各位能按照本人所说步骤走下去,不用很长时间,坚持个3个月,你的js层级会提高一个档次,无他,唯有努力与坚持,请看: 1. 从头到尾对一遍<<Javascript高级程序设计>>,不懂的地方可以暂时掠过,给自己对javascript有一个大体的印象2. 认认真真的读完这本书:<<编写可维护的javascript>>,从编码规范,技巧,模式,等各个方面深入体

初中级Javascript程序员必修学习目录(zhuan)

1. 从头到尾对一遍<<Javascript高级程序设计>>,不懂的地方可以暂时掠过,给自己对javascript有一个大体的印象2. 认认真真的读完这本书:<<编写可维护的javascript>>,从编码规范,技巧,模式,等各个方面深入体会javascript3. 重新读一遍<<Javascript高级程序设计>>,目的是再次回顾经典,这次重读你会对这本书有深一层的认识4. <<javascript模式>> 

Javascript模式(一) 单例模式

function A(){ // 存储实例对象 var instance; // 重写构造函数,只返回闭包内的局部变量instance A = function(){ return instance; } // 重写原型为实例本身 之后定义在原型上的属性和方法会直接赋在该实例上 A.prototype = this; // 实例化 instance = new A(); // 重写构造函数 instance.constructor = A; // 第一次实例化时返回重写之后的构造函数的实例 re

《JavaScript权威指南》学习笔记之二十---XMLHttpRequest和AJAX解决方案

一.AJAX概述 AJAX是Asynchronous JavaScript and XML的缩写,中文译作异步JavaScript和XML.AJAX 不是新的编程语言,而是一种使用现有标准的新方法,在不重新加载页面的情况下,与服务器交换数据并更新部分网页的艺术.其核心是:客户端的Javascript能够与web服务器进行异步数据交换. 二.AJAX基础---XMLHttpRequest对象 所有现代浏览器(IE7+.Firefox.Chrome.Safari 以及 Opera)均内建 XMLHt

《Javascript权威指南》学习笔记之十六:BOM之源---BOM基本应用

BOM的基本应用包括:管理浏览器历史.解析地址和获取浏览器信息,本文将介绍这些应用. 一.浏览历史管理 1.history对象的方法和属性 History 对象包含用户(在浏览器窗口中)访问过的 URL,是 window 对象的一部分,可通过 window.history 属性对其进行访问.没有应用于 History 对象的公开标准,不过所有浏览器都支持该对象. length属性:返回浏览器历史列表中的URl数量.是"前进"和"后退"两个按钮之下包含的地址数的总和.