title: Loop detection in javascript's built-in functions
body: <p>I obtained the following trace from Chrome developer tool's console:</p>
  
  <pre><code>&gt; a = [1]
  [1]
  &gt; b = [2, a]
  [2, Array[1]]
  &gt; a.push(b)
  2
  &gt; a.toString()
  "1,2,"
  </code></pre>
  
  <p>It seems the <code>toString()</code> intelligently skipped the recursive part of the object graph. Is this a standard behavior documented somewhere?</p>