Playing with JavaScript prototypes
// all objects inherit from Object.prototype,
// we can add capabilities like so:
console.log('adding capabilities to Object.prototype');
if (typeof Object.prototype.totalBills != 'function') {
    Object.prototype.totalBills = function () {
        if (this.bills && this.bills.constructor === Array) {
            var total = 0;
            for (var i=0; i<this.bills.length; i++) {
                if (typeof this.bills[i] === 'number') {
                    total += this.bills[i];
                }
            }
            return total;
        }
    };
}
var myObj = {
    name: 'Curtis',
    bills: [100,200,300,1000]
};
console.log('total bills: ' + myObj.totalBills());
// arrays
var myArray = ['woopty','freakin','doo'];
// checking for the array type
console.log('checking for the array type');
// typeof outputs 'object', because arrays are objects, not helpful here
console.log('typeof myArray: ' + typeof myArray);
// checking against the constructor is the correct way
console.log('(myArray.constructor === Array): ' + (myArray.constructor === Array));
// extending Array.prototype
console.log('adding capabilities to Array.prototype');
if (typeof Array.prototype.addSomething != 'function') {
    Array.prototype.addSomething = function () {
        this.push('something');
    };
}
myArray.addSomething();
console.log(myArray);