Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

VJET/Typing Object Literals and Function References

< VJET
Revision as of 08:45, 2 December 2012 by Bimalshah72.gmail.com (Talk | contribs) (New page: JavaScript object literals provide a way to define and create new objects.  They are frequently used to define data structures and lightweight class instances. Object Literals and Fu...)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

JavaScript object literals provide a way to define and create new objects.  They are frequently used to define data structures and lightweight class instances.

Object Literals and Function Refs are frequently used constructs in JavaScript; they can be assigned to variables and properties, returned by functions, and passed as arguments.

In this example Point is comprised of two int properties, Line is comprised of two Point properties and the function SimpleLine takes two Point arguments.   We also define two function refs, createLine and isSingularity.

vjo.otype('Shape')
.defs ({
    Point: {
        x: undefined,    //< Number
        y: undefined    //< NumberNumber    },
    Line: {
        start: undefined,    //< Shape.Point
        end: undefined       //< Shape.Point
    },
 
    //> public Shape.Line createLine(Shape::Point pt1, Shape::Point pt2)
    createLine : vjo.NEEDS_IMPL,
 
    //> public boolean isSingularity(Shape.Line line)
    isSingularity: vjo.NEEDS_IMPL
 
})
.endType();

When you need to refer to an otype definition from another type you must:

Use the fully qualified name of the type, or use the _.needs_ Comment, which serves as a shortcut to the _otype_ namespace.

Do not include the _otype_ in a _.needs_ section; _otypes_ are not true types, but are used to provide a namespace for custom types.

The following example:

Uses the _needs_ Comment to create a shortcut for the _otype namespace_, _samples.Shape_.

Declares two _Point_ properties and a _Line_ property

Declares a function typed as _SimpleLine_

vjo.ctype('samples.ConstructShape')
//> needs samples.Shape
.protos({
    point1 : {x:0, y:0},     //< Shape::Point
    point2 : {x:10, y:0},     //< Shape::Point
    line1 : undefined,         //< Shape::Line
 
    //> public Shape.SimpleLine createLine()
    createLine : function(pt1, pt2) {
        this.line1 = {start: pt1, end: pt2} ;
    }
})
.endType();

Back to the top