随笔分类 -  javaScript

摘要:迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 实现一个each函数: 该函数属于内部迭代器,内部定义好了迭代规则,外部只需要一次初始调用。 实现一个compare函数:(外部迭代器) 阅读全文
posted @ 2017-02-24 13:51 dreamerjdw 阅读(178) 评论(0) 推荐(0)
摘要:代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。 虚拟代理实现图片预加载: 缓存代理计算乘积: 阅读全文
posted @ 2017-02-23 13:51 dreamerjdw 阅读(138) 评论(0) 推荐(0)
摘要:策略模式定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 使用策略模式计算奖金: 实现一:最初代码实现 实现一缺点: 函数庞大,if-else语句需要覆盖所有逻辑分支; 函数缺乏弹性,新增绩效等级时,需要深入函数内部实现,违反了开放-封闭原则; 算法复用性差。 实现二:策略模式 阅读全文
posted @ 2017-02-23 11:00 dreamerjdw 阅读(200) 评论(0) 推荐(0)
摘要:单例模式定义:保证一个类仅有有一个实例,并提供一个访问它的全局访问点。 应用场景:有一些对象只需要一个。如线程池、全局缓存、浏览器中的window对象等。 实现一: 实现一的缺点:增加了这个“类”的不透明性,使用者必须知道这是一个单例类,跟以往通过new的方式获取对象不同。 实现二: 实现二的缺点: 阅读全文
posted @ 2017-02-22 18:44 dreamerjdw 阅读(166) 评论(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 阅读(234) 评论(0) 推荐(0)
摘要:结果: 类风格代码 对象关联委托 阅读全文
posted @ 2017-01-11 11:43 dreamerjdw 阅读(248) 评论(0) 推荐(0)
摘要:对this的常见误解 this指向函数本身; this指向函数的词法作用域; this是在运行时进行绑定的,并不是在编写时,它的上下文取决于函数调用时的条件。 this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。 对象属性引用链中只有最顶层或者说最后一层会影响调用位置 判断this的 阅读全文
posted @ 2017-01-10 14:19 dreamerjdw 阅读(123) 评论(0) 推荐(0)
摘要:作用域和闭包 ・作用域 引擎:从头到尾负责整个JavaScript的编译及执行过程。 编译器:负责语法分析及代码生成等。 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限。 作用域是一套规则,用于确定在何处以及如何查 阅读全文
posted @ 2017-01-09 15:39 dreamerjdw 阅读(210) 评论(0) 推荐(0)
摘要:JavaScript 函数(作用域以及闭包) ・执行环境及作用域 执行环境定义了变量或函数有权访问的其他数据。 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量或函数都保存在这个对象中, 虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在后台使用它。 当代码在一个环境中执行时, 阅读全文
posted @ 2016-12-29 16:20 dreamerjdw 阅读(211) 评论(0) 推荐(0)
摘要:异步的脚本加载 问题: <head>标签里的大脚本会滞压所有页面渲染工作,使页面在脚本加载完毕前一直处于白屏; <body>标签末尾的大脚本使用户只能看到静态页面,原本应进行渲染的地方却是空的; 解决方案: 对脚本分而治之; 负责让页面更好看、更好用的脚本立即加载,可稍后再加载的脚本稍后再加载。 H 阅读全文
posted @ 2016-12-28 15:49 dreamerjdw 阅读(197) 评论(0) 推荐(0)
摘要:Promise和Deferred对象 现在jQuery中所有的Ajax函数多会返回Promise对象。 Promise对象代表一项有两种可能结果(成功或失败),并持有多个回调。 以前: $.get(url, { success: onSuccess, failure: onFailure, alwa 阅读全文
posted @ 2016-12-28 12:45 dreamerjdw 阅读(347) 评论(0) 推荐(0)
摘要:分布式事件 发布/订阅模式分发事件 ・PubSub模式 浏览器允许向DOM元素附加事件处理器; Node的EventEmitter对象 emitter.on(‘evacuate’, function() {…}); emitter.emit(‘evacuate’); emit意为触发,负责调用给定事 阅读全文
posted @ 2016-12-28 11:15 dreamerjdw 阅读(333) 评论(0) 推荐(0)
摘要:JavaScript异步编程 深入理解JavaScript事件 ・事件的调度 JavaScript事件处理器在线程空闲之前不会运行 线程的阻塞 结果上看出setTimeout没有使用另一线程 队列 调用setTimeout时,会有一个延时事件排入队列; 输入事件的工作方式完全一样,如单机事件发生时, 阅读全文
posted @ 2016-12-27 19:21 dreamerjdw 阅读(669) 评论(0) 推荐(0)
摘要:继承 有以下两种基本方法可以实现继承: 一、原型链 优点: 原型链可实现对原型属性和方法的继承(多个子类实例共享) → 函数复用 例: instance1 和 instance2共享父类方法sayHello() 二、借用构造函数 优点:可实现实例属性的继承 → 确保每个实例都有它自己的属性 例: i 阅读全文
posted @ 2016-12-27 15:04 dreamerjdw 阅读(117) 评论(0) 推荐(0)
摘要:有三种基本的方式可以创建对象: 工厂模式、构造函数模式和原型模式 工厂模式: 构造模式 原型模式 理解原型对象: 当定义构造函数Person时,会自动生成一个Person的原型对象Person.prototype; Person.prototype中同时自动生成属性constructor指向Pers 阅读全文
posted @ 2016-12-26 20:22 dreamerjdw 阅读(136) 评论(0) 推荐(0)
摘要:JavaScript设计模式 一、 设计模式 一个模式就是一个可重用的方案; 有效的解决方法、易重用、善于表达该解决方案; 未通过“模式特性”测试的模式称为模式原型; 三规则:适用性、有用性、可用性; 三个分类: 创建型设计模式 构造器模式(Constructor)、工厂模式(Factory)、抽象 阅读全文
posted @ 2016-12-05 15:58 dreamerjdw 阅读(208) 评论(0) 推荐(0)
摘要:高性能的JavaScript 一、 加载和运行 脚本下载解析执行时,页面已经加载完成并显示在用户面前 减少外部脚本文件数量,整合成一个文件 非阻塞方式 var xhr = new XMLHttpRequest(); xhr.open(“get”, “file.js", true); xhr.onre 阅读全文
posted @ 2016-10-10 14:37 dreamerjdw 阅读(156) 评论(0) 推荐(0)