JSFiddle - React, Tailwind, and code Playground

by viatropos

HTML

<button id='one'>Infinite loop with self referential attribute</button><button id='two'>hasOwnProperty with accessors</button>

JavaScript

var _log = function(string) {
  $('#two').after('<p>' + string + '</p>');
}

// infinite loop
$('#one').click(function() {
  var array = [];
  // self referential attribute
  array.self = array;

  try {
    $.extend(true, array);
  } catch (error) {
    _log(error.toString());
    alert(error);
  }
});

// accessor hasOwnProperty bug
$('#two').click(function() {
  Object.defineProperty(Array.prototype, '[]', {
    get: function() { return this },
    enumerable: true,
    configurable: true
  });

  var array = [];
  _log('array === array["[]"], ' + (array === array['[]']));
  _log('array.hasOwnProperty("length"), ' + array.hasOwnProperty('length'));
  _log('array.hasOwnProperty("[]"), ' + array.hasOwnProperty('[]'));
});