Proto is an extensible program-code-template for creating objects
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.
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.
- Proto.iife.js (18.7 KB)
- Proto.iife.min.js (5.89 KB)
- Proto.iife.min.js.map (108 Bytes)
- Proto.iife.min.js.gz (2.31 KB)
Use this URL for dev/testing
<script src="https://rawgit.com/adriancmiranda/Proto/master/dist/Proto.umd.js"></script>
Use this URL in production
<script src="https://cdn.rawgit.com/adriancmiranda/Proto/master/dist/Proto.umd.min.js"></script>
jspm install adriancmiranda/Proto
bower install adriancmiranda/Proto
npm i -D Proto
component install adriancmiranda/Proto
var Proto = require('Proto');
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);
See this usage here. You'll need open the browser console to see him in action.