all javascript Value Object VO


I use a lot value objects (VO) in Javascript storing JSON content and it is quite boring to create a new VO. So i did a factory to automate the process.

Create a new VO:
var TestVO = AMF.voFactory([
    ['name', {type: 'string'}],
    ['age', {type: 'int'}],
    ['height', {type: 'float'}],
    ['friends', {type: 'array', defaultValue: null, addName: 'friend'}],
    ['y', {}]

Create a new instance on t:
var t = new TestVO();

Set values:
t.setName('My Name');
t.setFriends(['Friend A', 'Friend B']);
t.addFriend('Friend C');
t.setX('value X');
t.setY('value Y');

Get values:
t.getName() - My Name
t.getAge() - 28
t.getHeight() - 1.74
t.getFriends() - Friend A,Friend B,Friend C
t.getX() - value X
t.getY() - value Y
t.toString() -
    name: My Name,
    age: 28,
    height: 1.74,
    friends: [Friend A, Friend B, Friend C],
    x: value X,
    y: value Y
t.serialize() - name=My%20Name&age=28&height=1.74& friends=Friend%20A%2CFriend%20B%2CFriend%20C& x=value%20X&y=value%20Y

Using parse() method (JSON notation):
var v = {'name': 'My New Name', 'age': 29, 'height': 1,76, 'friends': ['Friend D', 'Friend E'], 'x': 'value X2', 'y': 'value Y2'};

Get new values:
t.getName() - My New Name
t.getAge() - 29
t.getHeight() - 1.76
t.getFriends() - Friend D,Friend E
t.getX() - value X2
t.getY() - value Y2
t.toString() -
    name: My Novo Name,
    age: 29,
    height: 1.76,
    friends: [Friend D, Friend E],
    x: value X2,
    y: value Y2
t.serialize() - name=My%20Novo%20Name&age=29&height=1.76& friends=Friend%20D%2CFriend%20E& x=value%20X2&y=value%20Y2

The methods parse(), toString() and serialize() are created as default, but you can reewrite anyone as you need.
TestVO.prototype.parse = function() { ... };
TestVO.prototype.toString = function() { ... };
TestVO.prototype.serialize = function() { ... };

Download it here ( 6kb)

2 replies on “voFactory”

I think of writing VO javascript classes are boring too. But the VO class compression and the simplicity reached when creating a new VO object may standardize the use of Value Objects at all.

Was nice to get my tips on get to the “html doc” example clarified.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.