.Apply() and .Call() with Array.pop and Array.shift

Calling a function as if it were a method of an another object.

by Susan Delgado

JavaScript

var calculator = function () {
    var func = Array.prototype.pop.apply(arguments);
    //apply method outputs an array
    args = func.apply(null, arguments);
    // alert(args + "hello");
    return args;
};
var getsum = function () {
    var value = 0;
    // alert (value);
    for (var i = 0, len = arguments.length; i < len; i = i + 1) {
        value = value + arguments[i];
        //alert (arguments[i]);
    }
    return value;
},
getdiff = function (x, y) {
    var value = Array.prototype.shift.call(arguments);
 
    for (var i = 0, len = arguments.length; i < len; i = i + 1) {
          value = value - arguments[i];
    }
    return value;
};
var resultSum = calculator(1, 2, 15, 17, getsum),
    resultDiff = calculator(1, 2, 19, 50, getdiff);
alert(resultSum);
alert(resultDiff);