Function-Object Literal Syntax
Requires Sweet.js!
This macro combines the power of two powerful literals: Functions and Objects.
var spy = fn { spycallCount++; spywasCalled = true; } callCount: 0 wasCalled: false; console; // falseconsole; // 0 ; console; // trueconsole; // 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).