JSFiddle - React, Tailwind, and code Playground

by amatiasq

HTML

<script src="http://amatiasq.com/fiddle-console.js"></script>

JavaScript

var id = 0;
function createId() { return id++ }

var Enemy = {
    _pool: [],
    new: function() {
        var instance = this._pool.length ?
            this._pool.pop() :
            Object.create(this);
    
        instance.constructor.apply(this, arguments);
        return instance;
    },
    
    constructor: function() {
        this.id = createId();
    },
        
    dispose: function() {
        delete this.id;
        Enemy._pool.push(this);
    },
            
    die: function() {
        console.log('Tell my wife I love her...');
    },
};

var enemy1 = Enemy.new();
enemy1.die();
enemy1.dispose();
// aquí deberíamos setear enemy1 a null
// porque puede ser reciclado en cualquier momento
//enemy1 = null;

var enemy2 = Enemy.new();
console.log(enemy1 === enemy2); // true