function.wraps()

(info) This AI is still in early stages of development.

function.wraps()

Create a new function by wrapping an existing function in another existing function...

 

Syntax

The parameters to newFn are passed to innerFn. The return value of innerFn is passed as the sole parameter to outerFn (the wrapper) and the return value of outerFn is then passed to the calling script...

var newFn = outerFn.wraps(innerFn);   result = newFn(args...);

Parameters / Functions

Parameter / Function

Type

Mandatory

Description

API Version

Parameter / Function

Type

Mandatory

Description

API Version

innerFn

Function

The inner function that will be called first with the arguments passed in to newFn

1.0

outerFn

Function

The outer function that will be called second with a single argument that is the return value of innerFn.

outerFn should require only a single parameter as it's not possible for innerFn to return multiple arguments.

1.0

args...

Variant

When calling newFn you can optionally specify one or more arguments that will be passed to innerFn

1.0

Return value

Value

Type

Description

Util.js version

Value

Type

Description

Util.js version

newFn

Function

A new function based on the composition of innerFn and outerFn

1.0

<result>

Variant

The return value of the new function is derived as follows:

  1. Call innerFn with args

  2. Pass result of innerFn as the argument for outerFn

  3. Return outerFn's return value

1.0

Example

Create a rounded square root function based on Math.sqrt and Math.round functions
var roundedSqRoot = Math.round.wraps(Math.sqrt);   roundedSqRoot(28); // 5   // Here's why: // 1. Math.sqrt(28) → 5.291502622129181 // 2. Math.round(5.291502622129181) → 5