I was wondering how RequireJS and AMD worked. So I created this snip. It might not be correct but it worked for me.
load('foo', function (foo){ var f = new foo(); f.a = 100; f.b = 200; alert(f.add()); }); function define(name, callback) { modules[name] = callback; } function load(file, callback) { var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true; script.src = file + ".js"; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script); script.onload = function() { callback(modules[file]); }; } var modules = []; // foo.js define("foo", function() { var foo = { a: 1, b: 2, add: function () { return this.a + this.b; } }; return foo; });