代码改变世界

随笔档案-2012年01月

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

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

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

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

深入理解JavaScript系列(14):作用域链(Scope Chain)

2012-01-18 09:35 by 汤姆大叔, 58335 阅读, 收藏, 编辑
摘要: 前言在第12章关于变量对象的描述中,我们已经知道一个执行上下文 的数据(变量、函数声明和函数的形参)作为属性存储在变量对象中。同时我们也知道变量对象在每次进入上下文时创建,并填入初始值,值的更新出现在代码执行阶段。这一章专门讨论与执行上下文直接相关的更多细节,这次我们将提及一个议题——作用域链。英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-4-scope-chain/中文参考:http://www.denisdeng.com/?p=908本文绝大部分内容来自上述地址,仅做少许修改,感谢作者定义如果要简要的描述并展示其重点,那么作用域链大多 阅读全文

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

2012-01-17 08:50 by 汤姆大叔, 46570 阅读, 收藏, 编辑
摘要: 介绍在这篇文章里,我们将讨论跟执行上下文直接相关的更多细节。讨论的主题就是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 汤姆大叔, 54751 阅读, 收藏, 编辑
摘要: 介绍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 阅读全文

大叔手记(18):利用Elmah和Google体验一把入侵的快感

2012-01-13 15:28 by 汤姆大叔, 14791 阅读, 收藏, 编辑
摘要: 介绍关于ELMAH,相信大家都不陌生了,最流行的错误日志记录组件,用过的人都知道其强大的威力,可以记录非常详细的错误信息供管理员和开发人员进行分析。Elmah配置起来也非常简单,但是同时也带来了一个问题:那就是如果配置不好的话,就会被入侵,而且入侵的方法非常非常简单,本文我讲演示一下,如何利用Elmah错误信息和Google搜索来入侵一个站点,同时本文也提供了正确的Elmah配置方法。原文整理自:http://www.troyhunt.com/2012/01/aspnet-session-hijacking-with-google.html注1:本人目的是让大家正确配置ELMAH,不是教大家入 阅读全文

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

2012-01-13 09:00 by 汤姆大叔, 43248 阅读, 收藏, 编辑
摘要: 简介从本章开始,我将陆续(翻译、转载、整理)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 汤姆大叔, 90968 阅读, 收藏, 编辑
摘要: 本篇是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 汤姆大叔, 44487 阅读, 收藏, 编辑
摘要: 前言写这篇文章的目的是经常看到开发人员说:把字符串转化为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 汤姆大叔, 20161 阅读, 收藏, 编辑
摘要: 前言本章我们要讲解的是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 汤姆大叔, 25104 阅读, 收藏, 编辑
摘要: 前言本章我们要讲解的是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 汤姆大叔, 42435 阅读, 收藏, 编辑
摘要: 前言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 阅读全文

深入理解JavaScript系列(5):强大的原型和原型链

2012-01-05 09:12 by 汤姆大叔, 118680 阅读, 收藏, 编辑
摘要: 前言JavaScript 不包含传统的类继承模型,而是使用 prototypal 原型模型。虽然这经常被当作是 JavaScript 的缺点被提及,其实基于原型的继承模型比传统的类继承还要强大。实现传统的类继承模型是很简单,但是实现 JavaScript 中的原型继承则要困难的多。由于 JavaScript 是唯一一个被广泛使用的基于原型继承的语言,所以理解两种继承模式的差异是需要一定时间的,今天我们就来了解一下原型和原型链。原型10年前,我刚学习JavaScript的时候,一般都是用如下方式来写代码: var decimalDigits = 2, tax ... 阅读全文

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

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