Jobject
A class that adds properties to your class that are easily overriden and maintain direct accessors. Similiar to objective-c @property and @synthesize.
Jobject = require './' @property 'name' @property 'title''' : return 'TITLE: ' + @_title @property 'author''' : return @_author + '!!!!' : @_author = 'AUTHOR: ' + author myClass = myClass.name = 'Jesse Earle'myClass.title = 'Fruit Loop'myClass.author = 'Stephen King' consolelogmyClassname # Jesse earle consolelogmyClasstitle # TITLE: Fruit Loop consolelogmyClassauthor #AUTHOR: Stephen King!!!!
Features
- A simple way to attach getters and setters to your classes
- Similarity Objective-C @property and @synthesize
- Reduce redundant code
- Access properties with the simple dot syntax
Usage
Create a class that extends Jobject
@property 'name'
This class now has the following properties:
- _name
- name
The _name property provides direct access to the value of the property.
The name property on the other hand actually points to a getter and setter function, but you still access it normally:
myClass = myClass.name = 'Jesse'consolelog myClassname # logs: Jesse
You can also give a default value to the property:
@property 'name''Default' myClass = consolelog myClassname # logs: Default
If you do not provide a default value it will point to null. Note that the property will exist on the instance.
Overriding the getter and setter is simple:
@property 'name''' : return @_name + '!' : @_name = '!' + name myClass = myClass.name = 'Jesse'consolelog myClassname # logs: !Jesse!