Ember.js - Les tableaux virtuels

HTML

<script src="https://raw.github.com/emberjs/starter-kit/master/js/libs/handlebars-1.0.0.beta.6.js"></script>
<script src="https://github.com/downloads/emberjs/ember.js/ember-1.0.pre.min.js"></script>
<div id="my-app"></div>

JavaScript

function var_export(mixed_expression, bool_return) {
  // http://kevin.vanzonneveld.net
  // +   original by: Philip Peterson
  // +   improved by: johnrembo
  // +   improved by: Brett Zamir (http://brett-zamir.me)
  // +   input by: Brian Tafoya (http://www.premasolutions.com/)
  // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
  // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
  // +   input by: Hans Henrik (http://hanshenrik.tk/)
  // -    depends on: echo
  // *     example 1: var_export(null);
  // *     returns 1: null
  // *     example 2: var_export({0: 'Kevin', 1: 'van', 2: 'Zonneveld'}, true);
  // *     returns 2: "array (\n  0 => 'Kevin',\n  1 => 'van',\n  2 => 'Zonneveld'\n)"
  // *     example 3: data = 'Kevin';
  // *     example 3: var_export(data, true);
  // *     returns 3: "'Kevin'"
  var retstr = '',
    iret = '',
    value,
    cnt = 0,
    x = [],
    i = 0,
    funcParts = [],
    // We use the last argument (not part of PHP) to pass in
    // our indentation level
    idtLevel = arguments[2] || 2,
    innerIndent = '',
    outerIndent = '',
    getFuncName = function (fn) {
      var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn);
      if (!name) {
        return '(Anonymous)';
      }
      return name[1];
    },
    _makeIndent = function (idtLevel) {
      return (new Array(idtLevel + 1)).join(' ');
    },
    __getType = function (inp) {
      var i = 0, match, types, cons, type = typeof inp;
      if (type === 'object' && inp.constructor &&
        getFuncName(inp.constructor) === 'PHPJS_Resource') {
        return 'resource';
      }
      if (type === 'function') {
        return 'function';
      }
      if (type === 'object' && !inp) {
        return 'null'; // Should this be just null?
      }
      if (type === "object") {
        if (!inp.constructor) {
          return 'object';
        }
        cons = inp.constructor.toString();
        match = cons.match(/(\w+)\(/);
        if (match) {
          cons =...