Proto
TypeScript icon, indicating that this package has built-in type declarations

1.1.4 • Public • Published

Proto

Proto is an extensible program-code-template for creating objects

stability build status dependencies status devDependency status Codacy Badge License

NPM

What you need to build your own Proto

In order to build Proto, you need to have the latest node/npm and git 1.7 or later. Earlier versions might work, but are not supported.

For Windows, you have to download and install git and node.

OS X users should install git.

Linux/BSD users should use their appropriate package managers to install git and node, or build from source if you swing that way. Easy-peasy.

How to build your own Proto

Clone a copy of the main Proto git repo by running:

git clone git://github.com/adriancmiranda/Proto.git

Enter the Proto directory and run the install script and the build script:

cd Proto && npm i && npm run build

The built version of Proto will be put in the dist/ subdirectory, along with the minified copy and associated map file.

Get Started

Installation

Links to CDN

Use this URL for dev/testing

<script src="https://rawgit.com/adriancmiranda/Proto/master/dist/Proto.js"></script>

Use this URL in production

<script src="https://cdn.rawgit.com/adriancmiranda/Proto/master/dist/Proto.min.js"></script>

via JSPM

jspm install adriancmiranda/Proto

via Bower

bower install adriancmiranda/Proto

via NPM

npm i -D Proto

via Component

component install adriancmiranda/Proto

Node/Browserify/Webpack

var Proto = require('Proto');

Usage

 
var Ninja = Proto.extends({
    // Objects doesn't affect implementations.
    defaults:{
        ninjateste:'**'
    },
    kill:function(flush){
        console.log('kill '+ flush);
        flush && this.flush();
    }
});
 
var Human = Proto.extends({
    constructor:function(){
        console.log('i r human', this.$protoID);
        this.super();
        this.option();
    }
});
 
var ChuckNorris = Human.extends({
    defaults:{
        skills:'ninja'
    },
    implements:[Ninja],
    constructor:function(){
        console.log('i r badass and.. ', this.$protoID);
        this.super();
        this.kill('with thumb');
    },
    rise:3
});
 
var Goku = ChuckNorris.extends({
    defaults:{
        superpowers:['unknown']
    },
    constructor:function(){
        console.log('Hello! I\'m goku and.. ', this.$protoID);
        this.super();
    },
    rise:function(){ // override rise property
        console.log('wait for', this.super(), 'days...'); // super returns rise property from superclass
        return this.super();
    }
});
 
var chuck = new ChuckNorris();
chuck.kill('again!');
console.log('chuck:', chuck instanceof Proto); // true
console.log('chuck:', chuck instanceof Ninja); // false
console.log('chuck:', chuck instanceof Human); // true
console.log('chuck:', chuck instanceof ChuckNorris); // true
console.log('chuck.options:', chuck.options);
console.log('chuck:', chuck);
 
var goku = new Goku();
goku.rise();
console.log('goku:', goku);
 

Sample

See this usage here. You'll need open the browser console to see him in action.

A real world sample

plnkr

License

MIT

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.1.4
    5
    • latest

Version History

Package Sidebar

Install

npm i Proto

Weekly Downloads

5

Version

1.1.4

License

MIT

Last publish

Collaborators

  • adriancmiranda