# Properties

All the following properties are read-only and may not be changed by the user.

## #.order

Number of nodes in the graph.

Example

``````const graph = new Graph();

graph.order;
>>> 2``````

## #.size

Number of edges in the graph.

Example

``````const graph = new Graph();

graph.size;
>>> 1``````

Variants

• `#.directedSize`
• `#.undirectedSize`

## #.type

Type of the graph. One of `mixed`, `directed` or `undirected`.

Example

``````const graph = new Graph();
graph.type;
>>> 'mixed'

const directedGraph = new DirectedGraph();
directedGraph.type;
>>> 'directed'``````

## #.multi

Whether the graph accepts parallel edges or not.

Example

``````const graph = new Graph();
graph.multi;
>>> false

const multiGraph = new MultiGraph();
multiGraph.multi;
>>> true``````

## #.allowSelfLoops

Whether the graph accepts self loops or not.

``````const graph = new Graph();
graph.allowSelfLoops;
>>> true

const otherGraph = new Graph({allowSelfLoops: false});
graph.allowSelfLoops;
>>> false``````

## #.selfLoopCount

The total number of self loop included in the graph.

``````const graph = new Graph();

graph.selfLoopCount
>>> 0

graph.mergeEdge('John', 'John');

graph.selfLoopCount
>>> 1``````

Variants

• `#.directedSelfLoopCount`
• `#.undirectedSelfLoopCount`

## #.implementation

A string containing the graph instance's implementation name.

``````import Graph from 'graphology';

const graph = new Graph();
graph.implementation;
>>> 'graphology'``````

It can be useful if you ever need to optimize libraries based upon the knowledge that the given instance is from a specific implementation.