<commit_before>## Good going!!

Simple currying is good. However delaying invocation for only second call will not gives advantage. Also what if all argument are already with us in that case delaying invocation for second or subsequent call will be overhead. we want to call our function as:

sum(3,4); // 7
sum (3)(4); // 7

To dive deep into this we first need to understand few function call such as:

* call
* apply

For this we have to create two method caller (for call) and applier (for apply).

## Task
Write function which will invoked a method passed as argument in reference of object argument pass.

Suppose we have a method:

var update = function(name, age, tShirtSize){
    this.name = name;
    this.age = age;
    this.tShirtSize = tShirtSize;
};

and a person object:

var person = {name: 'Kishor', 28, 'L' };

you need to provide implimentation of method:

var caller = function (person, update, 'Sharma', 29, 'XL') {
  // your code here
};

console.log(person) // => person.name = Sharma, person.age = 29 and person.tShirtSize = XL

----------------------------------------------------------------------
## HINTS

The call() method is inherited from Function.prototype. It calls a function with a given 'this' value and arguments provided individually.

To know more about concept used follow:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/call


When you are done, you must run:
```sh
$ {appname} verify program.js
```

to proceed. Your program will be tested, a report will be generated, and the lesson will be marked 'completed' if you are successful.

----------------------------------------------------------------------
## Boilerplate
var callAndApply = {
  caller: function (object, method, nameArg, ageArg, tShirtSizeArg) {
    //your code
  },
  applier: function (object, method, argumentsArr) {
    // your code
  }
};
module.exports = callAndApply;
<commit_msg>corrected person object and caller method task requirements<commit_after>## Good going!!

Simple currying is good. However delaying invocation for only second call will not gives advantage. Also what if all argument are already with us in that case delaying invocation for second or subsequent call will be overhead. we want to call our function as:

sum(3,4); // 7
sum (3)(4); // 7

To dive deep into this we first need to understand few function call such as:

* call
* apply

For this we have to create two method caller (for call) and applier (for apply).

## Task
Write function which will invoked a method passed as argument in reference of object argument pass.

Suppose we have a method:

var update = function(name, age, tShirtSize){
    this.name = name;
    this.age = age;
    this.tShirtSize = tShirtSize;
};

and a person object:

var person = {name: 'Kishor', age: 28, tShirtSize: 'L' };

you need to provide implimentation of method:

var caller = function (person, 
                      update, 
                      name, //'Sharma' 
                      age, // 29
                      tShirtSize, // 'XL') {
  // your code here
};

console.log(person) // => person.name = Sharma, person.age = 29 and person.tShirtSize = XL

----------------------------------------------------------------------
## HINTS

The call() method is inherited from Function.prototype. It calls a function with a given 'this' value and arguments provided individually.

To know more about concept used follow:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/call


When you are done, you must run:
```sh
$ {appname} verify program.js
```

to proceed. Your program will be tested, a report will be generated, and the lesson will be marked 'completed' if you are successful.

----------------------------------------------------------------------
## Boilerplate
var callAndApply = {
  caller: function (object, method, nameArg, ageArg, tShirtSizeArg) {
    //your code
  },
  applier: function (object, method, argumentsArr) {
    // your code
  }
};
module.exports = callAndApply;

{'fraction_non_alphanumeric': 0.153713298791019, 'fraction_numerical': 0.005921539600296077, 'mean_word_length': 2.606761565836299, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2629947', 'n_tokens_mistral': 1123, 'n_tokens_neox': 1067, 'n_words': 486}