摘要: 加载和渲染 概念: 加载:从“URL”到构建DOM树。 渲染:从DOM树到生成可视化图像。 实际上,这两个过程会交叉,很难明确区分。 视图(viewport):网页通常比我们屏幕可视面积大,当前可见区域称为视图。 DOM树构建过程: 1. DOM解释器由上到下解析HTML,构造DOM树 2. 解析构 阅读全文
posted @ 2017-04-14 15:53 dreamerjdw 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 实现一个each函数: 该函数属于内部迭代器,内部定义好了迭代规则,外部只需要一次初始调用。 实现一个compare函数:(外部迭代器) 阅读全文
posted @ 2017-02-24 13:51 dreamerjdw 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。 虚拟代理实现图片预加载: 缓存代理计算乘积: 阅读全文
posted @ 2017-02-23 13:51 dreamerjdw 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 策略模式定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 使用策略模式计算奖金: 实现一:最初代码实现 实现一缺点: 函数庞大,if-else语句需要覆盖所有逻辑分支; 函数缺乏弹性,新增绩效等级时,需要深入函数内部实现,违反了开放-封闭原则; 算法复用性差。 实现二:策略模式 阅读全文
posted @ 2017-02-23 11:00 dreamerjdw 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 单例模式定义:保证一个类仅有有一个实例,并提供一个访问它的全局访问点。 应用场景:有一些对象只需要一个。如线程池、全局缓存、浏览器中的window对象等。 实现一: 实现一的缺点:增加了这个“类”的不透明性,使用者必须知道这是一个单例类,跟以往通过new的方式获取对象不同。 实现二: 实现二的缺点: 阅读全文
posted @ 2017-02-22 18:44 dreamerjdw 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 题目: 实现一个LazyMan,可以按照以下方式调用: LazyMan("Hank")输出: Hi! This is Hank! LazyMan("Hank").sleep(10).eat("dinner")输出 Hi! This is Hank! //等待10秒.. Wake up after 1 阅读全文
posted @ 2017-02-09 15:52 dreamerjdw 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 结果: 类风格代码 对象关联委托 阅读全文
posted @ 2017-01-11 11:43 dreamerjdw 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 对this的常见误解 this指向函数本身; this指向函数的词法作用域; this是在运行时进行绑定的,并不是在编写时,它的上下文取决于函数调用时的条件。 this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。 对象属性引用链中只有最顶层或者说最后一层会影响调用位置 判断this的 阅读全文
posted @ 2017-01-10 14:19 dreamerjdw 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 作用域和闭包 ・作用域 引擎:从头到尾负责整个JavaScript的编译及执行过程。 编译器:负责语法分析及代码生成等。 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限。 作用域是一套规则,用于确定在何处以及如何查 阅读全文
posted @ 2017-01-09 15:39 dreamerjdw 阅读(201) 评论(0) 推荐(0) 编辑
摘要: JavaScript 函数(作用域以及闭包) ・执行环境及作用域 执行环境定义了变量或函数有权访问的其他数据。 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量或函数都保存在这个对象中, 虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在后台使用它。 当代码在一个环境中执行时, 阅读全文
posted @ 2016-12-29 16:20 dreamerjdw 阅读(204) 评论(0) 推荐(0) 编辑