Coder Social home page Coder Social logo

define's Introduction

define

Now part of comjs; usage same as in comjs.

Getting started

// ============================================================================
// Interface contracts
// ============================================================================

var IPet = {

    isSleepy: 'sleepy', // access on class attribute

    calcHappiness: function (ate) { // generic happiness response in pets
        return ate && this.isSleepy ? 0.9 : -10;
    }
};

var IFeline = {
    
    postInit: function () { // called post instantiation
        if (!this.habbits)
            this.habbits = { couchSleeper: false };
    },

    sleepsOnTheCouch: 'habbits.couchSleeper', // access on nested class attribute

    pet: function () { // feline's response to petting
        if (this.sleepsOnTheCouch)
            return Math.random() + 0.2 > 0.5 ? 'purr' : 'survive';
        return Math.random() > 0.5 ? 'survive' : 'bite';
    },

    findElevatedVantagePoint: '@require' // require member implementation
};

// ============================================================================
// Class definition
// ============================================================================

var Cat = define(function (color, sleepy, habbits) {
    
    // instance properties
    this.color   = color;
    this.sleepy  = sleepy;
    this.habbits = habbits;
}, [ 

    // shared contracts
    IPet,
    IFeline,

    // custom members
    {
        // exception thrown if missing since required by IFeline with '@require'
        findElevatedVantagePoint: function (furniture) { /* cat ninja code */ },

        // partially override IPet's method
        calcHappiness: function (ate, whenAsked) {
            return whenAsked ? 0.9999999991 : this.calcHappiness.super(ate);
        }
    }
]);

// ============================================================================
// Main
// ============================================================================

var catOverTheCouch  = new Cat('brown', true,  { couchSleeper: true  }),
    catUnderTheCouch = new Cat('gray',  false);

console.log([
    catOverTheCouch.pet(),                       // purr
    catOverTheCouch.isSleepy,                    // true
    catOverTheCouch.sleepsOnTheCouch,            // true
    catOverTheCouch.calcHappiness(true, true),   // 0.9999999991

    catUnderTheCouch.pet(),                      // bite
    catUnderTheCouch.isSleepy,                   // false
    catUnderTheCouch.sleepsOnTheCouch,           // false
    catUnderTheCouch.calcHappiness(false)        // -10
].join('\n'));

define's People

Contributors

sanagnos avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.