javascript
文章平均质量分 81
huang_zd
这个作者很懒,什么都没留下…
展开
-
深入理解JavaScript系列(47):对象创建模式(上篇)
介绍本篇主要是介绍创建对象方面的模式,利用各种技巧可以极大地避免了错误或者可以编写出非常精简的代码。模式1:命名空间(namespace)命名空间可以减少全局命名所需的数量,避免命名冲突或过度。一般我们在进行对象层级定义的时候,经常是这样的:var app = app || {};app.moduleA = app.moduleA || {};app.modul转载 2014-04-13 15:18:46 · 698 阅读 · 0 评论 -
深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇)
本篇是ECMA-262-3 in detail系列的一个概述(本人后续会翻译整理这些文章到本系列(第11-19章)。每个章节都有一个更详细的内容链接,你可以继续读一下每个章节对应的详细内容链接进行更深入的了解。适合的读者:有经验的开发员,专业前端人员。原作者: Dmitry A. Soshnikov发布时间: 2010-09-02原文:http://dmitrysoshniko转载 2014-03-27 08:43:28 · 950 阅读 · 0 评论 -
javascript中的Dom对象
DOM对象是Document Object Model文档对象模型的缩写。DOM是针对xml(html)的基于树的API。它把文档表示一个树模型。HTML DOM树组成从结构图可以看出,整个html称为dom树,而dom的引用为document,也称为一个节点。每一个HTML标签都为一个元素节点。标签中的文字则是文本节点,标签中的属性则是属性节点。dom中元素、文本、属性都原创 2014-03-03 21:12:54 · 1168 阅读 · 0 评论 -
深入理解JavaScript系列(8):S.O.L.I.D五大原则之里氏替换原则LSP
前言本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第3篇,里氏替换原则LSP(The Liskov Substitution Principle )。英文原文:http://freshbrewedcode.com/derekgreer/2011/12/31/solid-javascript-the-liskov-substitution-principl转载 2014-03-26 19:02:40 · 858 阅读 · 0 评论 -
深入理解JavaScript系列(36):设计模式之中介者模式
介绍中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。主要内容来自:http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/#mediatorpatternjavascript正文软转载 2014-04-08 11:58:06 · 666 阅读 · 0 评论 -
深入理解JavaScript系列(34):设计模式之命令模式
介绍命令模式(Command)的定义是:用于将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及执行可撤销的操作。也就是说改模式旨在将函数的调用、请求和操作封装成一个单一的对象,然后对这个对象进行一系列的处理。此外,可以通过调用实现具体函数的对象来解耦命令对象与接收对象。正文我们来通过车辆购买程序来展示这个模式,首先定义车辆购买转载 2014-04-07 10:51:15 · 676 阅读 · 0 评论 -
深入理解JavaScript系列(33):设计模式之策略模式
介绍策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。正文在理解策略模式之前,我们先来一个例子,一般情况下,如果我们要做数据合法性验证,很多时候都是按照swith语句来判断,但是这就带来几个问题,首先如果增加需求的话,我们还要再次修改这段代码以增加逻辑,而且在进行单元测试的时候也会越来越复杂,代码如下:转载 2014-04-06 17:24:44 · 729 阅读 · 0 评论 -
深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP
前言本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第2篇,开闭原则OCP(The Open/Closed Principle )。开闭原则的描述是:Software entities (classes, modules, functions, etc.) should be open for extension but closed for mo转载 2014-03-26 09:48:48 · 835 阅读 · 0 评论 -
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
前言Bob大叔提出并发扬了S.O.L.I.D五大原则,用来更好地进行面向对象编程,五大原则分别是:The Single Responsibility Principle(单一职责SRP)The Open/Closed Principle(开闭原则OCP)The Liskov Substitution Principle(里氏替换原则LSP)The Interface Segrega转载 2014-03-26 09:45:30 · 1185 阅读 · 0 评论 -
深入理解JavaScript系列(5):强大的原型和原型链
前言JavaScript 不包含传统的类继承模型,而是使用 prototypal 原型模型。虽然这经常被当作是 JavaScript 的缺点被提及,其实基于原型的继承模型比传统的类继承还要强大。实现传统的类继承模型是很简单,但是实现 JavaScript 中的原型继承则要困难的多。由于 JavaScript 是唯一一个被广泛使用的基于原型继承的语言,所以理解两种继承模式的差转载 2014-03-26 09:45:10 · 685 阅读 · 0 评论 -
深入理解JavaScript系列(4):立即调用的函数表达式
前言大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行。在详细了解这个之前,我们来谈了解一下“自执行”这个叫法,本文对这个功能的叫法也不一定完全对,主要是看个人如何理解,因为有的人说立即调用,有的人说自动执行,所以你完全可以按照你自己的理解来取一个名字,不过我听很多人都叫它为“自执行”,但作者后面说了很多,来说服大家称呼为“立即调用的函转载 2014-03-26 09:44:44 · 655 阅读 · 0 评论 -
深入理解JavaScript系列(3):全面解析Module模式
简介Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级使用方式。首先我们来看看Module模式的基本特征:模块化,可重用封装了变量和function,和全局的namaspace不接触,松耦合只暴露可用public的方法,其它私有方法全部隐藏关于Module模式,最早是由YUI的成员Eric转载 2014-03-26 09:33:13 · 692 阅读 · 0 评论 -
深入理解JavaScript系列(2):揭秘命名函数表达式
前言网上还没用发现有人对命名函数表达式进去重复深入的讨论,正因为如此,网上出现了各种各样的误解,本文将从原理和实践两个方面来探讨JavaScript关于命名函数表达式的优缺点。简单的说,命名函数表达式只有一个用户,那就是在Debug或者Profiler分析的时候来描述函数的名称,也可以使用函数名实现递归,但很快你就会发现其实是不切实际的。当然,如果你不关注调试,那就没什么可担心的了转载 2014-03-26 09:31:34 · 764 阅读 · 0 评论 -
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点
才华横溢的Stoyan Stefanov,在他写的由O’Reilly初版的新书《JavaScript Patterns》(JavaScript模式)中,我想要是为我们的读者贡献其摘要,那会是件很美妙的事情。具体一点就是编写高质量JavaScript的一些要素,例如避免全局变量,使用单变量声明,在循环中预缓存length(长度),遵循代码阅读,以及更多。此摘要也包括一些与代码不太相关的习转载 2014-03-26 08:16:49 · 1673 阅读 · 0 评论 -
深入理解JavaScript系列(11):执行上下文(Execution Contexts)
简介从本章开始,我将陆续(翻译、转载、整理)http://dmitrysoshnikov.com/网站关于ECMAScript标标准理解的好文。本章我们要讲解的是ECMAScript标准里的执行上下文和相关可执行代码的各种类型。原始作者:Dmitry A. Soshnikov原始发布: 2009-06-26俄文原文:http://dmitrysoshnikov.com/转载 2014-03-27 10:21:05 · 751 阅读 · 0 评论 -
深入理解JavaScript系列(9):根本没有“JSON对象”这回事!
前言写这篇文章的目的是经常看到开发人员说:把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多谢。正文本文的主题是基于ECMAScript262-3来写的,2011年的262-5新规范增加了JSON对象,和我们平时所说的JSON有关系,但是不是同一个东西,文章最后一节会讲到新增转载 2014-03-26 22:02:29 · 657 阅读 · 0 评论 -
深入理解JavaScript系列(46):代码复用模式(推荐篇)
介绍本文介绍的四种代码复用模式都是最佳实践,推荐大家在编程的过程中使用。模式1:原型继承原型继承是让父对象作为子对象的原型,从而达到继承的目的:function object(o) { function F() { } F.prototype = o; return new F();}// 要继承的父对象var parent转载 2014-04-13 08:36:29 · 746 阅读 · 0 评论 -
深入理解JavaScript系列(45):代码复用模式(避免篇)
介绍任何编程都提出代码复用,否则话每次开发一个新程序或者写一个新功能都要全新编写的话,那就歇菜了,但是代码复用也是有好要坏,接下来的两篇文章我们将针对代码复用来进行讨论,第一篇文避免篇,指的是要尽量避免使用这些模式,因为或多或少有带来一些问题;第二排是推荐篇,指的是推荐大家使用的模式,一般不会有什么问题。模式1:默认模式代码复用大家常用的默认模式,往往是有问题的,该模式使用转载 2014-04-12 17:42:28 · 832 阅读 · 0 评论 -
深入理解JavaScript系列(44):设计模式之桥接模式
介绍桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化。正文桥接模式最常用在事件监控上,先看一段代码:addEvent(element, 'click', getBeerById);function getBeerById(e) {var id = this.id;asyncRequest('GET', 'beer.uri?id='转载 2014-04-12 08:51:56 · 798 阅读 · 0 评论 -
深入理解JavaScript系列(43):设计模式之状态模式
介绍状态模式(State)允许一个对象在其内部状态改变的时候改变它的行为,对象看起来似乎修改了它的类。正文举个例子,就比如我们平时在下载东西,通常就会有好几个状态,比如准备状态(ReadyState)、下载状态(DownloadingState)、暂停状态(DownloadPausedState)、下载完毕状态(DownloadedState)、失败状态(DownloadF转载 2014-04-11 19:05:49 · 831 阅读 · 0 评论 -
深入理解JavaScript系列(42):设计模式之原型模式
介绍原型模式(prototype)是指用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象。正文对于原型模式,我们可以利用JavaScript特有的原型继承特性去创建对象的方式,也就是创建的一个对象作为另外一个对象的prototype属性值。原型对象本身就是有效地利用了每个构造器创建的对象,例如,如果一个构造函数的原型包含了一个name属性(见后面的例子),那通过转载 2014-04-11 12:26:25 · 752 阅读 · 0 评论 -
深入理解JavaScript系列(40):设计模式之组合模式
介绍组合模式(Composite)将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。常见的场景有asp.net里的控件机制(即control里可以包含子control,可以递归操作、添加、删除子control),类似的还有DOM的机制,一个DOM节点可以包含子节点,不管是父节点还是子节点都有添加、删除、遍历子节点的通用功能。所转载 2014-04-11 00:14:08 · 759 阅读 · 0 评论 -
深入理解JavaScript系列(39):设计模式之适配器模式
介绍适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一些工作。速成包装器(wrapper)。正文我们来举一个例子,鸭子(Dock)有飞(fly)和嘎嘎叫(quack)的行为,而火鸡虽然也有飞(fly)的行为,但是其叫声是咯咯的(gobble)。如果转载 2014-04-10 17:44:01 · 716 阅读 · 0 评论 -
深入理解JavaScript系列(41):设计模式之模板方法
介绍模板方法(TemplateMethod)定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法是一种代码复用的基本技术,在类库中尤为重要,因为他们提取了类库中的公共行为。模板方法导致一种反向的控制结构,这种结构就是传说中的“好莱坞法则”,即“别找找我们,我们找你”,这指的是父类调用一个类的操作,而转载 2014-04-11 08:19:39 · 734 阅读 · 0 评论 -
深入理解JavaScript系列(38):设计模式之职责链模式
介绍职责链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。也就是说,请求以后,从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给链中的下一个候选者。提交请求的对象并不明确知道哪一个对象将会处理它——也就是该请求有一个隐式转载 2014-04-09 22:06:17 · 628 阅读 · 0 评论 -
深入理解JavaScript系列(37):设计模式之享元模式
介绍享元模式(Flyweight),运行共享技术有效地支持大量细粒度的对象,避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)。享元模式可以避免大量非常相似类的开销,在程序设计中,有时需要生产大量细粒度的类实例来表示数据,如果能发现这些实例除了几个参数以外,开销基本相同的 话,就可以大幅度较少需要实例化的类的数量。如果能把那些参数移动到类实例的外面,在方法调用转载 2014-04-09 08:29:40 · 2001 阅读 · 1 评论 -
深入理解JavaScript系列(35):设计模式之迭代器模式
介绍迭代器模式(Iterator):提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。迭代器的几个特点是:访问一个聚合对象的内容而无需暴露它的内部表示。为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作。遍历的同时更改迭代器所在的集合结构可能会导致问题(比如C#的foreach里不允许修改item)。正文一般转载 2014-04-07 19:48:56 · 686 阅读 · 0 评论 -
深入理解JavaScript系列(13):This? Yes, this!
介绍在这篇文章里,我们将讨论跟执行上下文直接相关的更多细节。讨论的主题就是this关键字。实践证明,这个主题很难,在不同执行上下文中this的确定经常会发生问题。许多程序员习惯的认为,在程序语言中,this关键字与面向对象程序开发紧密相关,其完全指向由构造器新创建的对象。在ECMAScript规范中也是这样实现的,但正如我们将看到那样,在ECMAScript中,this并不限于只用转载 2014-03-27 12:21:36 · 663 阅读 · 0 评论 -
深入理解JavaScript系列(12):变量对象(Variable Object)
介绍JavaScript编程的时候总避免不了声明函数和变量,以成功构建我们的系统,但是解释器是如何并且在什么地方去查找这些函数和变量呢?我们引用这些对象的时候究竟发生了什么?原始发布:Dmitry A. Soshnikov发布时间:2009-06-27俄文地址:http://dmitrysoshnikov.com/ecmascript/ru-chapter-2-variable转载 2014-03-27 12:20:04 · 679 阅读 · 0 评论 -
JavaScript继承详解(五)
在本章中,我们将分析John Resig关于JavaScript继承的一个实现 - Simple JavaScript Inheritance。 John Resig作为jQuery的创始人而声名在外。是《Pro JavaScript Techniques》的作者,而且Resig将会在今年秋天推出一本书《JavaScript Secrets》,非常期待。调用方式 调用方式非常优转载 2014-03-25 18:14:24 · 1200 阅读 · 0 评论 -
JavaScript继承详解(一)
面向对象与基于对象几乎每个开发人员都有面向对象语言(比如C++、C#、Java)的开发经验。 在传统面向对象的语言中,有两个非常重要的概念 - 类和实例。 类定义了一类事物公共的行为和方法;而实例则是类的一个具体实现。 我们还知道,面向对象编程有三个重要的概念 - 封装、继承和多态。但是在JavaScript的世界中,所有的这一切特性似乎都不存在。 因为JavaScript本身不是面向转载 2014-03-25 07:14:18 · 1381 阅读 · 0 评论 -
JavaScript继承详解(六)
在本章中,我们将分析Prototypejs中关于JavaScript继承的实现。Prototypejs是最早的JavaScript类库,可以说是JavaScript类库的鼻祖。 我在几年前接触的第一个JavaScript类库就是这位,因此Prototypejs有着广泛的群众基础。不过当年Prototypejs中的关于继承的实现相当的简单,源代码就寥寥几行,我们来看下。 早期转载 2014-03-25 18:27:23 · 1126 阅读 · 0 评论 -
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP
前言本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第5篇,依赖倒置原则LSP(The Dependency Inversion Principle )。英文原文:http://freshbrewedcode.com/derekgreer/2012/01/22/solid-javascript-the-dependency-inversion-princi转载 2014-04-01 07:26:57 · 852 阅读 · 0 评论 -
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP
前言本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第4篇,接口隔离原则ISP(The Interface Segregation Principle)。英文原文:http://freshbrewedcode.com/derekgreer/2012/01/08/solid-javascript-the-interface-segregation-princ转载 2014-03-31 17:41:39 · 1300 阅读 · 0 评论 -
深入理解JavaScript系列(23):JavaScript与DOM(上)——也适用于新手
文档对象模型Document Object ModelDOM(Document Object Model,文档对象模型)是一个通过和JavaScript进行内容交互的API。Javascript和DOM一般经常作为一个整体,因为Javascript通常都是用来进行DOM操作和交互的。主要内容来自:http://net.tutsplus.com/tutorials/javas转载 2014-04-01 10:40:57 · 654 阅读 · 0 评论 -
深入理解JavaScript系列(20):《你真懂JavaScript吗?》答案详解
介绍昨天发的《大叔手记(19):你真懂JavaScript吗?》里面的5个题目,有很多回答,发现强人还是很多的,很多人都全部答对了。今天我们来对这5个题目详细分析一下,希望对大家有所帮助。注:问题来自大名鼎鼎的前端架构师Baranovskiy的帖子《So, you think you know JavaScript?》。答案也是来自大名鼎鼎的JS牛人Nichola转载 2014-03-31 08:53:32 · 715 阅读 · 0 评论 -
深入理解JavaScript系列(19):求值策略
介绍本章,我们将讲解在ECMAScript向函数function传递参数的策略。计算机科学里对这种策略一般称为“evaluation strategy”(大叔注:有的人说翻译成求值策略,有的人翻译成赋值策略,通看下面的内容,我觉得称为赋值策略更为恰当,anyway,标题还是写成大家容易理解的求值策略吧),例如在编程语言为求值或者计算表达式设置规则。向函数传递参数的策略是一个特殊的c转载 2014-03-30 09:15:47 · 832 阅读 · 0 评论 -
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
介绍本章是关于ECMAScript面向对象实现的第2篇,第1篇我们讨论的是概论和CEMAScript的比较,如果你还没有读第1篇,在进行本章之前,我强烈建议你先读一下第1篇,因为本篇实在太长了(35页)。英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-7-2-oop-ecmascript-implementation/转载 2014-03-29 16:04:32 · 928 阅读 · 0 评论 -
深入理解JavaScript系列(结局篇)
网络文章来源本系列文章参考了大量的互联网网站,在此向各位网站拥有者、博主、提到的以及未提到的作者们说一声:多谢感谢了。本系列文章主要参考了如下站点:五大原则:http://freshbrewedcode.com/derekgreerECMAScript262系列:http://dmitrysoshnikov.com/DOM系列文章:http://net.tu转载 2014-04-14 16:53:25 · 775 阅读 · 0 评论 -
深入理解JavaScript系列(16):闭包(Closures)
介绍本章我们将介绍在JavaScript里大家经常来讨论的话题 —— 闭包(closure)。闭包其实大家都已经谈烂了。尽管如此,这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭包内部究竟是如何工作的。正如在前面的文章中提到的,这些文章都是系列文章,相互之间都是有关联的。因此,为了更好的理解本文要介绍的内容,建议先去阅读第14章作用域链和第12章变量对象。转载 2014-03-28 19:07:38 · 658 阅读 · 0 评论