代码改变世界

随笔分类 -  [07]Web开发

深入理解JavaScript系列(18):面向对象编程之ECMAScript实现(推荐)

2012-02-06 09:27 by 汤姆大叔, 23257 阅读, 收藏, 编辑
摘要: 介绍本章是关于ECMAScript面向对象实现的第2篇,第1篇我们讨论的是概论和CEMAScript的比较,如果你还没有读第1篇,在进行本章之前,我强烈建议你先读一下第1篇,因为本篇实在太长了(35页)。英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-7-2-oop-ecmascript-implementation/注:由于篇幅太长了,难免出现错误,时刻保持修正中。在概论里,我们延伸到了ECMAScript,现在,当我们知道它OOP实现时,我们再来准确定义一下:ECMAScript is an object-oriented progra 阅读全文

深入理解JavaScript系列(17):面向对象编程之概论

2012-02-03 09:05 by 汤姆大叔, 28114 阅读, 收藏, 编辑
摘要: 介绍在本篇文章,我们考虑在ECMAScript中的面向对象编程的各个方面(虽然以前在许多文章中已经讨论过这个话题)。我们将更多地从理论方面看这些问题。 特别是,我们会考虑对象的创建算法,对象(包括基本关系 - 继承)之间的关系是如何,也可以在讨论中使用(我希望将消除之前对于JavaScript中OOP的一些概念歧义)。英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-7-1-oop-general-theory/概论、范式与思想在进行ECMAScript中的OOP技术分析之前,我们有必要掌握一些OOP基本的特征,并澄清概论中的主要概念。ECM 阅读全文

深入理解JavaScript系列(16):闭包(Closures)

2012-01-31 08:44 by 汤姆大叔, 53657 阅读, 收藏, 编辑
摘要: 介绍本章我们将介绍在JavaScript里大家经常来讨论的话题 —— 闭包(closure)。闭包其实大家都已经谈烂了。尽管如此,这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭包内部究竟是如何工作的。正如在前面的文章中提到的,这些文章都是系列文章,相互之间都是有关联的。因此,为了更好的理解本文要介绍的内容,建议先去阅读第14章作用域链和第12章变量对象。英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-6-closures/概论在直接讨论ECMAScript闭包之前,还是有必要来看一下函数式编程中一些基本定义。众所周知, 阅读全文

深入理解JavaScript系列(15):函数(Functions)

2012-01-30 08:37 by 汤姆大叔, 36076 阅读, 收藏, 编辑
摘要: 介绍本章节我们要着重介绍的是一个非常常见的ECMAScript对象——函数(function),我们将详细讲解一下各种类型的函数是如何影响上下文的变量对象以及每个函数的作用域链都包含什么,以及回答诸如像下面这样的问题:下面声明的函数有什么区别么?(如果有,区别是什么)。原文:http://dmitrysoshnikov.com/ecmascript/chapter-5-functions/var foo = function () { ...};平时的惯用方式:function foo() { ...}或者,下面的函数为什么要用括号括住?(function () { ...})();关于... 阅读全文

深入理解JavaScript系列(13):This? Yes,this!

2012-01-17 08:50 by 汤姆大叔, 46344 阅读, 收藏, 编辑
摘要: 介绍在这篇文章里,我们将讨论跟执行上下文直接相关的更多细节。讨论的主题就是this关键字。实践证明,这个主题很难,在不同执行上下文中this的确定经常会发生问题。许多程序员习惯的认为,在程序语言中,this关键字与面向对象程序开发紧密相关,其完全指向由构造器新创建的对象。在ECMAScript规范中也是这样实现的,但正如我们将看到那样,在ECMAScript中,this并不限于只用来指向新创建的对象。英文翻译: Dmitry A. Soshnikov在Stoyan Stefanov的帮助下发布: 2010-03-07http://dmitrysoshnikov.com/ecmascript/c 阅读全文

深入理解JavaScript系列(12):变量对象(Variable Object)

2012-01-16 09:03 by 汤姆大叔, 54556 阅读, 收藏, 编辑
摘要: 介绍JavaScript编程的时候总避免不了声明函数和变量,以成功构建我们的系统,但是解释器是如何并且在什么地方去查找这些函数和变量呢?我们引用这些对象的时候究竟发生了什么?原始发布:Dmitry A. Soshnikov发布时间:2009-06-27俄文地址:http://dmitrysoshnikov.com/ecmascript/ru-chapter-2-variable-object/英文翻译:Dmitry A. Soshnikov发布时间:2010-03-15英文地址:http://dmitrysoshnikov.com/ecmascript/chapter-2-variable-o 阅读全文

深入理解JavaScript系列(11):执行上下文(Execution Contexts)

2012-01-13 09:00 by 汤姆大叔, 43081 阅读, 收藏, 编辑
摘要: 简介从本章开始,我将陆续(翻译、转载、整理)http://dmitrysoshnikov.com/网站关于ECMAScript标标准理解的好文。本章我们要讲解的是ECMAScript标准里的执行上下文和相关可执行代码的各种类型。原始作者:Dmitry A. Soshnikov原始发布: 2009-06-26俄文原文:http://dmitrysoshnikov.com/ecmascript/ru-chapter-1-execution-contexts/英文翻译:Dmitry A. Soshnikov.发布时间:2010-03-11英文翻译:http://dmitrysoshnikov.com 阅读全文

深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇)

2012-01-12 09:01 by 汤姆大叔, 90622 阅读, 收藏, 编辑
摘要: 本篇是ECMA-262-3 in detail系列的一个概述(本人后续会翻译整理这些文章到本系列(第11-19章)。每个章节都有一个更详细的内容链接,你可以继续读一下每个章节对应的详细内容链接进行更深入的了解。适合的读者:有经验的开发员,专业前端人员。原作者: Dmitry A. Soshnikov发布时间: 2010-09-02原文:http://dmitrysoshnikov.com/ecmascript/javascript-the-core/参考1:http://ued.ctrip.com/blog/?p=2795参考2:http://www.cnblogs.com/ifishing/ 阅读全文

深入理解JavaScript系列(9):根本没有“JSON对象”这回事!

2012-01-11 09:08 by 汤姆大叔, 44392 阅读, 收藏, 编辑
摘要: 前言写这篇文章的目的是经常看到开发人员说:把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多谢。正文本文的主题是基于ECMAScript262-3来写的,2011年的262-5新规范增加了JSON对象,和我们平时所说的JSON有关系,但是不是同一个东西,文章最后一节会讲到新增加的JSON对象。英文原文:http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/我想给大家澄清一下一个非常普遍的误解,我认为很多JavaScript 阅读全文

深入理解JavaScript系列(8):S.O.L.I.D五大原则之里氏替换原则LSP

2012-01-10 08:56 by 汤姆大叔, 20085 阅读, 收藏, 编辑
摘要: 前言本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第3篇,里氏替换原则LSP(TheLiskov Substitution Principle )。英文原文:http://freshbrewedcode.com/derekgreer/2011/12/31/solid-javascript-the-liskov-substitution-principle/开闭原则的描述是:Subtypes must be substitutable for their base types.派生类型必须可以替换它的基类型。 在面向对象编程里,继承提供了一个机制让子类和共享基类的代码 阅读全文

深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP

2012-01-09 09:08 by 汤姆大叔, 24889 阅读, 收藏, 编辑
摘要: 前言本章我们要讲解的是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 modification.软件实体(类,模块,方法等等)应当对扩展开放,对修改关闭,即软件实体应当在不修改的前提下扩展。open for extension(对扩展开放)的意思是说当新需求出现的时候,可以通过扩展现有模型达到目的 阅读全文

深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP

2012-01-06 09:13 by 汤姆大叔, 42310 阅读, 收藏, 编辑
摘要: 前言Bob大叔提出并发扬了S.O.L.I.D五大原则,用来更好地进行面向对象编程,五大原则分别是:The Single Responsibility Principle(单一职责SRP)The Open/Closed Principle(开闭原则OCP)The Liskov Substitution Principle(里氏替换原则LSP)The Interface Segregation Principle(接口分离原则ISP)The Dependency Inversion Principle(依赖反转原则DIP)五大原则,我相信在博客园已经被讨论烂了,尤其是C#的实现,但是相对于Java 阅读全文

大叔手记(17):大叔2011年读过的书及2012年即将要读的书

2012-01-04 09:39 by 汤姆大叔, 27173 阅读, 收藏, 编辑
摘要: 前言2011年是大叔最累的一年(基本上都是晚上12点以后睡觉,早上6点30分起),读得书也是异常的多,一方面要保持自己的技术在最前列,另外方面技术管理和项目管理方面的东西也要进一步进阶,2011年读过的书超过60本(也包括只收藏不读的书,还有一些非常小的英文电子书就不列了),除了一些大牛的书,其它的书基本上都是粗读的(一周一本),同时2012年的书也是按照这个计划来安排的,即:国际/国内大牛的书通读,一般的书粗读,以保证技术人员和管理人员的先进性:)。带 [荐]字的都是推荐大家读的。看了这篇帖子,大家千万别像我这么变态地读书,因为大叔已经不怎么亲自Coding了,所有以大量的时间读书。大叔在这 阅读全文

深入理解JavaScript系列(4):立即调用的函数表达式

2011-12-31 09:45 by 汤姆大叔, 117092 阅读, 收藏, 编辑
摘要: 前言大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行。在详细了解这个之前,我们来谈了解一下“自执行”这个叫法,本文对这个功能的叫法也不一定完全对,主要是看个人如何理解,因为有的人说立即调用,有的人说自动执行,所以你完全可以按照你自己的理解来取一个名字,不过我听很多人都叫它为“自执行”,但作者后面说了很多,来说服大家称呼为“立即调用的函数表达式”。本文英文原文地址:http://benalman.com/news/2010/11/immediately-invoked-function-expression/什么是自执行?在JavaScript里, 阅读全文

深入理解JavaScript系列(3):全面解析Module模式

2011-12-30 09:52 by 汤姆大叔, 100054 阅读, 收藏, 编辑
摘要: 简介Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级使用方式。首先我们来看看Module模式的基本特征:模块化,可重用封装了变量和function,和全局的namaspace不接触,松耦合只暴露可用public的方法,其它私有方法全部隐藏关于Module模式,最早是由YUI的成员Eric Miraglia在4年前提出了这个概念,我们将从一个简单的例子来解释一下基本的用法(如果你已经非常熟悉了,请忽略这一节)。基本用法先看一下最简单的一个实现,代码如下:var Calculator = function (eq) { 阅读全文

深入理解JavaScript系列(2):揭秘命名函数表达式

2011-12-29 09:02 by 汤姆大叔, 114203 阅读, 收藏, 编辑
摘要: 前言网上还没用发现有人对命名函数表达式进去重复深入的讨论,正因为如此,网上出现了各种各样的误解,本文将从原理和实践两个方面来探讨JavaScript关于命名函数表达式的优缺点。简单的说,命名函数表达式只有一个用户,那就是在Debug或者Profiler分析的时候来描述函数的名称,也可以使用函数名实现递归,但很快你就会发现其实是不切实际的。当然,如果你不关注调试,那就没什么可担心的了,否则,如果你想了解兼容性方面的东西的话,你还是应该继续往下看看。我们先开始看看,什么叫函数表达式,然后再说一下现代调试器如何处理这些表达式,如果你已经对这方面很熟悉的话,请直接跳过此小节。函数表达式和函数声明在EC 阅读全文

大叔手记(16):分析URL Routing和URL Rewriting两者之间的不同

2011-12-27 14:07 by 汤姆大叔, 11295 阅读, 收藏, 编辑
摘要: 前言前面有2篇帖子提到了关于URL Routing的特性,但是发现有很多人误会URL Routing就是URl Rewriting,其实2个虽然都提供相似的功能(提高友好的URL方便搜索引起收录),但是2者的原理和运行周期是完全不一样的,本篇文章我们就来分析一下具体有什么不同。例子在分析原理之前,我们先来做一个例子测试一下(IIS URL Rewrite模块需要IIS7的支持)。1.为Customer/1的URL建立对应的MVC程序首先建立一个普通的MVC3程序,建立一个简单的CustomerController以及一个简单的Detail action,代码如下:public class Cu 阅读全文

大叔手记(15):在ASP.NET 4.0 Web form上使用Routing优化URL

2011-12-26 08:52 by 汤姆大叔, 6469 阅读, 收藏, 编辑
摘要: 前言大家都知道MVC里利用Routing的特性将地址映射到Controller和Action上,其实因为本身Routing是.Net 4.0内置的特性了,所以Web form上其实也可以适用的,今天我们就来看看如何做一下URL地址的优化,目的是将http://localhost/Customer.aspx?Id = 1优化成http://localhost/Custome/1的形式。正文首先,建立一个空的ASP.NET 4.0 Web form项目,建立Global.asax文件,在Glolal类里,我们添加如下代码:namespace EasyURL{ public class Glo... 阅读全文

大叔手记(14):利用Routing特性提高ASP.NET MVC3站点的SEO权重

2011-12-23 14:21 by 汤姆大叔, 7025 阅读, 收藏, 编辑
摘要: 简介我们在开发互联网程序的时候,有个很重要的事情就是做搜索引擎优化(SEO),我们都知道ASP.NET MVC程序提供了友好的URL以及永久重定向的支持,这些友好的URL是利用Routing系统的特性来支持的,但是在这个Routing里有个问题,就是多个不同的地址和指向同一个action方法,那对于搜索引擎来说就意味着你的站点有很多地址的内容都是重复的。 本章内容将展示如果解决这一问题。正文对于SEO,一个地址对应一个唯一独立的内容是保证最好权重的一个重要步骤,所以我们需要确保每一个URL地址对应的内容都是不重复的(对于MVC来说也就是不同的Action),但ASP.NET MVC3程序默认是 阅读全文

深入理解JavaScript系列

2011-12-15 10:02 by 汤姆大叔, 596301 阅读, 收藏, 编辑
摘要: 深入理解JavaScript系列文章,包括了原创,翻译,转载,整理等各类型文章,如果对你有用,请推荐支持一把,给大叔写作的动力。深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点深入理解JavaScript系列(2):揭秘命名函数表达式深入理解JavaScript系列(3):全面解析Module模式深入理解JavaScript系列(4):立即调用的函数表达式深入理解JavaScript系列(5):强大的原型和原型链深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP深入理解JavaScript系列(7):S.O.L.I.D五大原则 阅读全文