Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

fn-obj-literal

1.1.0 • Public • Published

Function-Object Literal Syntax

Requires Sweet.js!

This macro combines the power of two powerful literals: Functions and Objects.

var spy = fn {
    function spy () {
        spy.callCount++;
        spy.wasCalled = true;
    },
 
    callCount: 0,
    wasCalled: false
};
 
console.log(spy.wasCalled); // false
console.log(spy.callCount); // 0
 
spy();
 
console.log(spy.wasCalled); // true
console.log(spy.callCount); // 1

Features

  • Declarative syntax!
  • Function name in scope over entire object.

Alternative Syntax

var spy = fn {
    [[call]]: function spy () {
        spy.callCount++;
        spy.wasCalled = true;
    },

    callCount: 0,
    wasCalled: false
};

Note: The [[call]] property must be the first property.

Note: If you can think of a better unambiguous property name, please file an issue with your suggestion.

Tested

This code has tests in the form of examples.sjs.

You can run them with npm test (soon).

Keywords

none

Install

npm i fn-obj-literal

DownloadsWeekly Downloads

1

Version

1.1.0

License

none

Last publish

Collaborators

  • avatar