Javascript Invocation Patterns

by jamey777

JavaScript

//function literal
var add = function(a, b) {
    return a + b;
};
console.log(add(1, 2)); //invoke

//method invocation pattern
var myObject = {
    value: 0,
    increment: function(inc) {
        this.value += typeof inc === 'number' ? inc : 1;
    }

};

myObject.increment(5);
console.log(myObject.value); //invoke

//function invocation pattern
var sum = add(3, 4);
console.log(sum); //invoke


// Augment myObject with a double method.
myObject.double = function() {
    var that = this; // Workaround.
    var helper = function() {
        that.value = add(that.value, that.value);
    };
    helper(); // Invoke helper as a function.
};
// Invoke double as a method.
myObject.double();
console.log(myObject.value);



//constructor invocation pattern
var Quo = function(string) {
    this.status = string;
}
Quo.prototype.get_status = function() {
    return this.status;
}
    var myQuo = new Quo("confused");
console.log(myQuo.get_status());


//apply invocation pattern
var array = [6, 6];
var sum = add.apply(null, array)
    console.log(sum);

var statusObject = {
    status: 'A-OK'
};

var status = Quo.prototype.get_status.apply(statusObject);
console.log(status);