javascript 设计模式 第1章 灵活的语言--JavaScript 初级程序员接到一个验证表单功能的任务,需要验证用户名.邮箱.密码等 ** 此文章内容大部分来自 <javascript设计模式>一书,请支持正版.** 1.简单的验证check.js 代码如下: function checkName(){ //验证姓名 } function checkEmail(){ //验证邮箱 } function checkPassword(){ //验证密码 } 这段代码功能可以实现,但是创建…
在写这篇博客时这本书我已经是看过一遍了,为了加深印象和深入学习于是打算做这系列的前端经典书籍导读博文,大家如果觉得这本书讲的好可以自己买来看看,我是比较喜欢看纸质版书的,因为这样才有读书的那种感觉. 本期我给大家讲述的是     前端经典js书籍   <<你不知道的javaScript(上卷)>> 第一章内容的知识点总结和讲解. 1.1 编译原理 尽管通常将js归类为"动态"或"解释执行"语言,但事实上它是一门编译语言.但与传统的编译语言不同…
[head first 设计模式] 第一章 策略模式 让我们先从一个简单的鸭子模拟器开始讲起. 假设有个简单的鸭子模拟器,游戏中会出现各种鸭子,此系统的原始设计如下,设计了一个鸭子超类,并让各种鸭子继承此超类. 若此时我们有了一个新的需求,我们需要鸭子会飞,那么我们该如何修改代码呢? 最初,我们想在基类上加上fly方法,使得所有子类鸭子都拥有相应的fly方法.但这样错误产生了,即使是本不该会飞的橡皮鸭子也拥有了fly方法. 或许我们可以把橡皮鸭中的fly方法覆盖掉,但这样每次新加入的不会飞的新鸭…
第一章 基本的格式化 1.4 ① 换行 当一行长度到达了单行最大的字符限制时,就需要手动将一行拆成俩行.通常我们会在运算符后换行,下一行会增加俩个层级的缩进. // 好的做法: 在运算符后换行,第二行追加俩个缩进 callFunction(document, element, window, "some string value", true, 123, navigator); // 不好的做法: 在运算符之前换行了 callFunction(document, element, wi…
草草的看完第一章,虽然看的是译文也是感觉涨姿势了, 我来总结一下: 由于 大多数浏览器都是 single process 处理 ui updatas and js execute 于是产生问题: js (script tag) will blocking page processing 上图说话: 于是大家动脑筋想办法 想到了三个办法 1. Parallel downloads, then execute  并行下载,然后执行. 2.Download times less,Less downlo…
第一章 一.严格模式与非严格模式 1.在程序中启用严格模式的方式是在程序的最开始增加一个特定的字符串字面量: ‘use strict’ 同样可以在函数体的开始处加入这句指令以启用该函数的严格模式. function f(x) { ‘use strict’; //... } 在严格模式下,不允许重复定义argument变量.例如以下代码在严格模式下会出错: function f(x) { ‘use strict’; var arguments = [ ]: //error :redefinitio…
动态语言类型与鸭子类型 此内容取自JavaScript设计模式与开发实践一书 编程语言按照数据类型大体可以分为2类,一类就是静态类型语言,另一类则是动态类型语言 静态类型语言也可以称之为编译语言,而动态类型语言则称可以之为解释型语言 JavaScript则属于动态类型语言他无需定义时候声明类型给实际编码带来了极大的灵活性,且可以尝试调用任何对象的任意方法, 而无需考虑它原本是否被设计为拥有该方法. 这其实也叫做鸭子类型 鸭子类型的定义为:如果它走起来像鸭子,叫起来也像鸭子,那么它就是鸭子 举个小…
刚开始学习设计模式之前,我是没想说要学习设计模式的,我只是因为想学习JS中的原型prototype知识,一开始我想JS中为什么要存在原型这个东西?于是慢慢通过原型而接触到设计模式,后来发现我这个过程是非常正确的,即先学习设计模式,然后在剖析原型及其原理. 我一开始,都是通过针对原型的知识点去看去学,发现还是理解不了,就算理解了原型,可以说只是停留在表面的知道,你并不懂得如何运用原型?后来,我通过用设计模式的角度去理解原型prototype,我才焕然大悟! 但是在这一篇章里面,并没有说到原型.原型…
根据<编写高质量代码改善JavaScript程序的188个建议>这本书,来记录我目前所了解的建议方式. 建议1:警惕Unicode乱码 根据ECMA标准规定JavaScript语言可以使用中文来命名变量或函数名,例如: var 人名 = “张三”; function 睡觉(谁){ alert(谁 + ":快睡觉!都半夜三更了."); } 睡觉(人名); 但是在ECMA标准化之前,JavaScript通常是不支持Unicode编码的,为了防止乱码,我们应该尽量使用基本字符进行…
设计模式是告诉我们如何组织类和对象以解决某种问题. 学习设计模式,也就是学习其他开发人员的经验与智慧,解决遇到的相同的问题. 使用模式的最好方式是:把模式装进脑子,然后在设计的时候,寻找何处可以使用它们.函数,方法是代码的复用,模式是经验的复用. 继承:超类的改变是会影响所有子类的,有时候让所有的子类都具有超类的行为是不恰当的,所以继承并不总是能很好的解决问题. 接口:java的接口是不具有实现代码的,所以继承接口是无法达到代码复用的 修改软件时,寻求用一种对既有代码影响最小的方式来修改软件,是…
多态 多态的实际含义:同一操作作用与不同的对象上面,可以产生不同的解释和不同的执行结果,就是说,给不同的对象发送同一个消息 的时候,这些对象会根据这个消息分别给出不同的反馈 代码如下: class Duck{}; class Chicken{}; let make = function(animal){ //instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上 if(animal instanceof Duck){ console…
Javascript是越来越厉害了,一统前后端开发.于是最近把设计模式又看了一遍,顺便做了个笔记,以方便自己和他人共同学习. 笔记连载详见:http://www.meteorcn.net/wordpress/2015/07/17/笔记-javascript设计模式-目录/ 笔记 Javascript设计模式 目录 综述: 1. Javascript设计模式本身没有什么技术含量,无非是用动态特性存取现有功能而已 2. 技术基础就是面向对象的实现与理解 3. 绝大多数模式是按功能区分的,明白了Jav…
第一章 面向对象的JavaScript 动态类型语言和鸭子类型 编程语言按照数据类型大体可以分为两类:静态类型语言.动态类型语言. 静态类型语言:在编译时便已确定变量的类型. 优点: 在编译时就能发现类型不匹配的错误. 在程序中明确地规定了数据类型,编译器还可以针对这些信息对程序进行一些优化工作,提高程序执行速度. 缺点:类型的声明也会增加更多的代码,会让程序员的精力从思考业务逻辑上分散开来. 动态类型语言:变量类型要到程序运行的时候,待变量被赋予某个值之后,才会具有某种类型. 优点: 编写的代…
第一章 面向对象的Javascript 1.1 多态在面向对象设计中的应用   多态最根本好处在于,你不必询问对象“你是什么类型”而后根据得到的答案调用对象的某个行为--你只管调用行为就好,剩下的一切多态会搞定 换句话说就是:多态的最根本作用就是把过程化的条件分支语句转化为对象的多态性,从而消除这些条件分支语句 例子:假设有一个地图应用,每个地图API提供商都提供了show方法,负责在页面上显示地图,首先我们用一些分支条件语句来实现一个调用方法renderMap 此时一旦需要增加搜搜地图的应用,…
作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Internet Explorer中的JScript各成一派,是两个不同的JavaScript版本.为了取得统一,以JavaScript1.1为蓝本定义了ECMA-262,一种名为ECMAScript新语言标准,作为JavaScript的基础. 2.JavaScript含义比ECMAScript定义的多,完整…
第一章 什么是Javascript 一.历史 JavaScript的名字怎么来的 首先,我们从javascript的历史开始了解,在以前的时候网页要验证某个必填字段是否填写,或者是判断输入的值的正确与否,每一次都要与服务器来一次交互通信,你可以想象一下:"当你填完一个信息登记表单,提交后,等待30秒,结果确实你的必填字段没填或者是值无效",想象都崩溃:( 然后,1995 年,网景公司一位名叫 Brendan Eich 的工程师,开始为即将发布的 Netscape Navigator 2…
首先我们对单例模式先进行理论上的讲解,接下来,我们再通过具体的代码示例,来讲解,这个单例模式的使用场景和这种模式的优缺点 (这个系列的所有关于设计模式的都是面向Javascript) 一.理论定义: 单例模式 --- 保证一个类仅有一个实例,并提供一个访问它的全局访问点 (是不是有点懵逼了,其实我第一次看到这句话的时候也是懵逼的,继续往下看呗) 二.话不多说直接上一个最简单的单例模式的代码: var SingleDog = function(name){ //创建构造函数 this.name =…
第1章:面向对象的JavaScript 动态类型和鸭子类型 编程语言按照数据类型大体可以分为两类: ① 静态类型语言:在编译时便已确定变量的类型. ② 动态类型语言:变量类型要到程序运行的时候,待变量被赋予某个值之后,才会具有某种类型. [鸭子类型]:如果它走起路来像鸭子,叫起来像鸭子,那么它就是鸭子. 鸭子类型指导我们只关注对象的行为,而不关注对象本身,也就是关注 HAS-A,而不是 IS-A. ☛ 在动态类型语言的面向对象设计中,鸭子类型的概念至关重要.利用鸭子类型的思想,我们不必借助超类型…
第一章 创建一个类 方法一:      var Anim = function() {           ...      };      Anim.prototype.start = function() {           ...      };      Anim.prototype.stop = function() {           ...      }; 方法二:      var Anim = function() {           ...      };    …
最近在读JavaScript设计模式这本书,准备搞一个系列来记录所学所想,其实主要原因是方便以后查阅. 第一章主要介绍了JS函数的不同定义与使用方法,用自己的方法去模拟类也是它的独有魅力所在. 首先,由check函数展开,如果用不同的函数去对应功能,会造成过多的全局变量定义,例如 var checkName = function () {//验证姓名} function checkName () {//验证姓名} 这两种方式都会创建全局变量checkName,一来会造成不必要的浪费,其次如果别人…
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)>,突然想着边看边记录,就像边看边写读后感.这本书从介绍表达式和申明变量开始,平滑的过渡到了闭包.面向对象开发等高级主题.与那些把大量篇幅花在讲解背景知识上的书,以及那些让人感觉好像要使用JavaScript 开发导弹制导系统的书,这本书让人感觉细致周到.亲切自然,这是一本写给“普通人”的书.它能够让你编写…
本节是javascript语言的一个快速预览,也是本书的第一部分快速预览. 读此书之前,感谢淘宝技术团队对此javascript核心的翻译,感谢弗拉纳根写出此书.感谢你们无私的分享,仅以此笔记献给你们的辛勤付出. 一:javascript语言核心 本章之后,我们将主要关注javascript的基础知识.第二章我们讲解javascript的注释,分号和unicode字符集:第三章会更有意思,主要讲解javascript的变量和赋值 这里有一些实例代码说明前两章的重点内容. <script type…
本系列的博客是由本人在阅读<JavaScript DOM编程艺术>一书过程中做的总结.前面的偏理论部分都是书中原话,觉得有必要记录下来,方便自己翻阅,也希望能为读到本博客的人提供一些帮助,所以 如果您也看过这本书,希望不要喷小的"抄袭",其实我也懒得敲这些文字也想简单粗暴地上代码,但是只有实践没有理论不容易自己理解,为避免误导,该"抄"的地方还是要"抄"的,哈哈~~ 一.JavaScript的起源 JavaScript是Netscap…
第一章 javascript概述 ①.javascript是一种松散类型语言;也是一种解释型语言;         第二章 词法结构 ①.大小写敏感         第三章 数据类型和值 ①.isFinite()函数:用来检测一个数字是否为NAN,正无穷大或负无穷大;   ②.特殊数值的常量   ③.字符串的使用 charAt(n):获取字符串第N个字符; eg:s=s.charAt(s.length-1)//获取字符串S的最后一个字符.   substring(a,b):从字符串中抽出第a到b…
因为好长时间的懒惰和懈怠,好久没有更新文章了,从现在开始我会按时更新一些自己总结的一些知识,和研究的东西,希望能让大家从我这里学到一点点的知识. 本文参考了张荣铭的javascript设计模式一书,算是自己对看了文章的总结吧,如果你想学习设计模式,可以去购买一本,学习一下,写的非常好. javaScript 在我们的开发中,如果给了自己一些验证姓名.邮箱.密码的任务,按照下面的写法看 //这样写就会污染到全局变量 都会挂载到window下 function checkName() { //验证姓…
第一章JavaScript简介 Javascript的诞生最早是为了处理表单数据验证的问题,以前主要是使用perl这个强大的服务端脚本语言处理的.在未诞生javascript之前, 人们每次提交表单就会与服务器交换数据,每一次请求都与服务器交互,若是仅仅只是一个字段没有填或者密码没有填,每一次都与服务器 端进行交互的话,会大大加重服务器那边的负荷,点击提交就会等待服务器端返回数据以及用户的体验也并不好. Netscape公司决定发明一种客户端语言来处理这种简单的验证.最后布兰登艾维奇开发了Liv…
数据结构与算法一直是我算比较薄弱的地方,希望通过阅读<javaScript数据结构与算法>可以有所改变,我相信接下来的记录不单单对于我自己有帮助,也可以帮助到一些这方面的小白,接下来让我们一起学习. 第一章 JavaScript简介 众所周知,JavaScript是一门非常强大的编程语言,不仅可以用于前端开发,也适用于后端开发,其中Node.js就是背后的技术. JavaScript数据结构与算法 那么学习JavaScript数据结构与算法有什么作用呢?首要的作用是数据结构和算法可以高效地解决…
第一章 JavaScript概述 前端三大技能: HTML: 描述网页内容 CSS: 描述网页样式 JavaScript: 描述网页行为 特点:动态.弱类型.适合面向对象和函数式编程的风格 语法源自Java 一等函数来自Scheme 基于原型的继承来自于Self 名字和版本: JavaScript是由网景(Netscape)公司创建,“JavaScript”是Sun MicroSystem公司的注册商标,用来特指网景(Mozilla)对着门的实现. ECMAScript: 网景将这么语言作为标准…
这一章要实现的就是jQuery的那种链式调用,例子: $(this).setStyle('color', 'green').show(); 一:调用链的结构: 首先我们来看一下最简单的$()函数的实现: function $() { var elements = []; , len = arguments.length; i < len; ++i) { var element = arguments[i]; if (typeof element == 'string') { element =…
面向对象编程 面向对象编程就是将你的需求抽象成一个对象.然后针对这个对象分析其特征(属性)与动作(方法).这个对象我们称之为类.面向对象编程思想其中的一个特点就是封装. 1.私有属性.私有方法.特权方法.对象公有属性.对象公有方法.构造器和类静态公有属性.类静态公有方法.公有属性.公有方法 var Book = function (id,name,price){ //私有属性 var num = 1; //私有方法 function checkId(){}; //特权方法 this.getNam…