SOURCE

// 字典结构的封装
class Map {
  constructor() {
    this.items = {};
  }

  // has(key) 判断字典中是否存在某个 key
  has(key) {
    return this.items.hasOwnProperty(key);
  }

  // set(key, value) 在字典中添加键值对
  set(key, value) {
    this.items[key] = value;
  }

  // remove(key) 在字典中删除指定的 key
  remove(key) {
    // 如果集合不存在该 key,返回 false
    if (!this.has(key)) { return false };
    delete this.items[key];
  }

  // get(key) 获取指定 key 的 value,如果没有,返回 undefined
  get(key) {
    return this.has(key) ? this.items[key] : undefined;
  }

  // 获取所有的 key
  keys() {
    return Object.keys(this.items);
  }

  // 获取所有的 value
  values() {
    return Object.values(this.items);
  }

  // size() 获取字典中的键值对个数
  size() {
    return this.keys().length;
  }

  // clear() 清空字典中所有的键值对
  clear() {
    this.items = {};
  }
}

function Graph() {
    // 顶点和边
    this.vertexes = []
    this.edges = new Map()

    // 添加顶点
    Graph.prototype.addVertexes = function(v) {
        this.vertexes.push(v)
        // 为该顶点增加一个相邻边映射
        thise.edges.set(v, [])
    }

      // 添加边
    Graph.prototype.addEdges = function(v1, v2) {
        this.edges.get(v1).push(v2)
        this.edges.get(v2).push(v1)
    }

    Graph.initColor = function() {
        // 初始节点颜色状态为白色,未访问
        let colors = []
        for(vertex of vertexes) {
            colors[color] = 'white'
        }
        return colors
    }
}
console 命令行工具 X clear

                    
>
console