Edit in JSFiddle

// componentSystem.js
(function() {

    window.game = {};
    game.component = {};

    game.createEntity = function(properties, components) {

        var prop;
        var entity = {};

        for (prop in properties) {
            entity[prop] = properties[prop];
        }

        components.forEach(function(component) {
            for (prop in component) {
                if (entity.hasOwnProperty(prop)) {
                    throw "Entity property conflict! " + prop;
                }
                entity[prop] = component[prop];
            }
        });

        return entity;

    }

}());

// entity.js
(function() {

    game.component.entity = {
        distanceTo: function(x, y) {
            return Math.sqrt(Math.pow(x - this.x, 2) +
                             Math.pow(y - this.y, 2));
        }
    }

}());

// moveable.js
(function() {

    game.component.moveable = {
        move: function(x, y) {
            this.x = x;
            this.y = y;
        }
    }

}());

// damageable.js
(function() {

    game.component.damageable = {
        damage: function(amount) {
            this.hp -= amount;
        }
    }

}());

// example usage
    
// set up entities
    
var entity1 = game.createEntity({
    name: "Entity 1",
    hp: 30,
    x: 5,
    y: 5
}, [game.component.entity,
        game.component.moveable,
        game.component.damageable]);

var entity2 = game.createEntity({
    name: "Entity 2",
    hp: 30,
    x: 10,
    y: 10
}, [game.component.entity,
        game.component.moveable]);
    
// do stuff with entities

var dist = entity1.distanceTo(entity2.x, entity2.y);

document.write("Distance between 1 and 2: " + dist + "<br>");

function damageIfPossible(entity) {
    if (entity.damage) {
        document.write(entity.name + " can be damaged!<br>");
        entity.damage(10);
        document.write(entity.name + " HP reduced to " + entity1.hp + "<br>");
    }
    else {
        document.write(entity.name + " cannot be damaged!<br>");
    }
}
 
damageIfPossible(entity1);
damageIfPossible(entity2);