Modules – Exercise (AMD)

HTML

<script src="http://requirejs.org/docs/release/2.1.20/minified/require.js"></script>

JavaScript

/**
 * Modules – Exercise (AMD)
 * 
 * Use the Asynchronous Module Definition to encapsulate logic into re-usable modules
 * 
 * 1. convert Item and Collection objects into modules
 * 2. import them into App module
 * 3. use same tests as previous exercise
 * 4. might be easier to fork your previous exercise solution and modify
 */

function Collection(id) {
    // implement me

    this.id = id;
    var _data = [];

    this.add = function (i) {
        _data.push(i);
    }
    this.remove = function (i) {
        var index = _data.indexOf(i);
        if (index > -1) {
            _data.splice(index, 1);
        }
    }
    this.size = function () {
        return _data.length;
    }
    this.contains = function (i) {

        return _data.indexOf(i) > -1;
    }
}

define('modColl', ['Collection'], function (Collection) {

    function Collection(id) {
        Collection.call(this, id);
    }
    Collection.prototype = Object.create(Collection.prototype);

    return Collection;
});

require(['modColl'], function (Collection) {
    var Coll1 = new Collection('Test');
    console.log(Coll1);
});