Modules – RMP Example

by Shane Porter

JavaScript

var Canine = (function () {

    function Canine(name) {
        this.name = name;
        this.howler = true;
    }

    Canine.prototype.bark = function () {
        return this.name + ' says: ' + (this.howler ? 'woooooow!' : 'woof, woof!');
    };

    return Canine;

}());

var Dog = (function (Canine) {

    function Dog(name, breed) {
        Canine.call(this, name);
        this.breed = breed;
        this.howler = breed === 'husky';
    }
    Dog.prototype = Object.create(Canine.prototype);

    return Dog;

}(Canine));

var Wolf = (function (Canine) {

    function Wolf(name) {
        Canine.call(this, name);
    }
    Wolf.prototype = Object.create(Canine.prototype);

    return Wolf;

}(Canine));

var Animals = (function (Wolf, Dog) {

    return {
        Dog: Dog,
        Wolf: Wolf
    };

})(Wolf, Dog);

var wolf1 = new Animals.Wolf('Ghost');
console.log(wolf1.bark());

var dog1 = new Animals.Dog('Bandit', 'husky');
console.log(dog1.bark());

var dog2 = new Animals.Dog('Patches', 'healer');
console.log(dog2.bark());