node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



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 './'
class MyClass extends Jobject
  @property 'name'
  @property 'title'''
    get: ()->
      return 'TITLE: ' + @_title
  @property 'author'''
    get: ()->
      return @_author + '!!!!'
    set: (author)->
      @_author = 'AUTHOR: ' + author
myClass = new MyClass() = 'Jesse Earle'
myClass.title = 'Fruit Loop' = 'Stephen King'
console.log( # Jesse earle 
console.log(myClass.title) # TITLE: Fruit Loop 
console.log( #AUTHOR: Stephen King!!!! 


  • 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


Create a class that extends Jobject

class MyClass 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 = new MyClass() = 'Jesse'
console.log # logs: Jesse 

You can also give a default value to the property:

class MyClass extends Jobject
  @property 'name''Default'
myClass = new MyClass()
console.log # 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:

class MyClass extends Jobject
  @property 'name''',
    get: ()->
      return @_name + '!'
    set: (name)->
      @_name = '!' + name
myClass = new MyClass() = 'Jesse'
console.log # logs: !Jesse!