JavaScript数据结构之链表

function defaultEquals (a, b) { return a===b } class Node{ constructor(element) { this.element = element this.next=undefined } } class LinkedList { constructor(equalsFn =defaultEquals

- 阅读全文 -

JavaScript数据结构之双端队列

class Deque { constructor() { this.list = {} this.count = 0 this.lowestrCount = 0 } //在双端队列前端添加 addFront(el){ if(this.isEmpty()){ this.addBack(el) } else if (this.low

- 阅读全文 -

JavaScript数据结构之队列

class Queue{ constructor() { this.count = 0 this.list = {} this.lowestCount=0 } //往队列添加元素 enqueue (element) { this.list[this.count] = element this.count++ } //检测队列是

- 阅读全文 -

JavaScript不用数组实现栈的方式

class Stack { constructor() { this.item={} this.count=0 } //栈顶添加 push(item){ this.item[this.count]=item this.count++ } //删除 pop(){ if(this.isEmpty()){ retur

- 阅读全文 -

如何让进行代码重构?

提炼函数在JavaScript开发中,我们大部分时间都在与函数打交道,所以我们希望这些函数有着良好的命名,函数体内包含的逻辑清晰明了。如果一个函数过长,不得不加上若干注释才能让这个函数显得易读一些,那这些函数就很有必要进行重构如果在函数中有一段代码可以被独立出来,那我们最好把这些代码放进另外一个独立的函数中。这是一种很常见的优化工作,这样做的好处主要有以下几点。避免出现超大函数。独立出来的函数有助

- 阅读全文 -

设计原则和编程技巧之最少知识原则

什么是最少知识原则?最少知识原则(LKP)说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。本节我们主要针对对象来说明这个原则,下面引用《面向对象设计原理与模式》一书中的例子来解释最少知识原则:某军队中的将军需要挖掘一些散兵坑。下面是完成任务的一种方式:将军可以通知上校让他叫来少校,然后让少校找来上尉,并让上尉

- 阅读全文 -

设计原则和编程技巧之单一职责原则

什么是单一职责原则(SRP)?单一职责原则(SRP)的职责被定义为“引起变化的原因”。如果我们有两个动机去改写一个方法,那么这个方法就具有两个职责。每个职责都是变化的一个轴线,如果一个方法承担了过多的职责,那么在需求的变迁过程中,需要改写这个方法的可能性就越大。此时,这个方法通常是一个不稳定的方法,修改代码总是一件危险的事情,特别是当两个职责耦合在一起的时候,一个职责发生变化可能会影响到其他职责的

- 阅读全文 -

JavaScript设计模式之适配器模式

引适配器模式的作用是解决两个软件实体间的接口不兼容的问题。使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体可以一起工作。港式插头转换器适配器的别名是包装器(wrapper),这是一个相对简单的模式。在程序开发中有许多这样的场景:当我们试图调用模块或者对象的某个接口时,却发现这个接口的格式并不符合目前的需求。这时候有两种解决办法,第一种是修改原来的接口实现,但如果原来的模块很复杂,或者

- 阅读全文 -

设计原则和编程技巧之开放-封闭原则

什么是开放-封闭原则(ocp)定义:软件实体(类、模块、函数)等应该是可以扩展的,但是不可修改。思想:当需要改变一个程序的功能或者给这个程序增加新功能的时候,可以使用增加代码的方式,但是不允许改动程序的源代码。用对象的多态性消除条件分支过多的条件分支语句是造成程序违反开放-封闭原则的一个常见原因。每当需要增加一个新的if语句时,都要被迫改动原函数。把if换成switch-case是没有用的,这是一

- 阅读全文 -

JavaScript设计模式之状态模式

什么是状态模式?状态模式是一种非同寻常的优秀模式,它也许是解决某些需求场景的最好方法。虽然状态模式并不是一种简单到一目了然的模式(它往往还会带来代码量的增加),但你一旦明白了状态模式的精髓,以后一定会感谢它带给你的无与伦比的好处。状态模式的关键是区分事物内部的状态,事物内部状态的改变往往会带来事物的行为改变。初识状态模式我们来想象这样一个场景:有一个电灯,电灯上面只有一个开关。当电灯开着的时候,此

- 阅读全文 -