前端学算法之算法复杂度

前面的话 本文将详细介绍算法复杂度 大O表示法 大O表示法是描述算法的性能和复杂程度。 分析算法时,时常遇到以下几类函数 如何衡量算法的效率?通常是用资源,例如CPU(时间)占用、内存占用、硬盘占用和网络占用。当讨论大O表示法时,一般考虑的是CPU(时间)占用 下面用一些例子来理解大O表示法的规则 ... »

前端学算法之算法模式

前面的话 本文将详细介绍算法模式,包括递归、动态规划和贪心算法 递归 递归是一种解决问题的方法,它解决问题的各个小部分,直到解决最初的大问题。通常涉及函数调用自身 能够像下面这样直接调用自身的方法或函数,是递归函数: 能够像下面这样间接调用自身的函数,也是递归函数: 假设现在必须要执行recursi ... »

前端学数据结构之字典和散列表

前面的话 集合、字典和散列表可以存储不重复的值。在集合中,我们感兴趣的是每个值本身,并把它当作主要元素。在字典中,我们用[键,值]的形式来存储数据。在散列表中也是一样(也是以[键,值]对的形式来存储数据)。但是两种数据结构的实现方式略有不同,本文将详细介绍字典和散列表这两种数据结构 字典 集合表示一 ... »

面向对象的设计原则

前面的话 面向对象的设计原则,可以说每种设计模式都是为了让代码迎合其中一个或多个原则而出现的, 它们本身已经融入了设计模式之中,给面向对象编程指明了方向。适合javascript开发的设计原则包括是单一职责原则、最少知识原则和开放封闭原则。本文将详细介绍面向对象的设计原则 单一职责原则 就一个类而言 ... »

javascript设计模式——适配器模式

前面的话 适配器模式的作用是解决两个软件实体间的接口不兼容的问题。使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体可以一起工作。适配器的别名是包装器(wrapper),这是一个相对简单的模式。在程序开发中有许多这样的场景:当试图调用模块或者对象的某个接口时,却发现这个接口的格式并不符合 ... »

javascript设计模式——中介者模式

前面的话 程序由大大小小的单一对象组成,所有这些对象都按照某种关系和规则来通信。当程序的规模增大,对象会越来越多,它们之间的关系也越来越复杂,难免会形成网状的交叉引用。当改变或删除其中一个对象的时候,很可能需要通知所有引用到它的对象。面向对象设计鼓励将行为分布到各个对象中,把对象划分成更小的粒度,有 ... »