Sounds so advanced that I threw my brain, went after it and threw it again... =)
Let's quickly create 2 nodes in a namespace, mine will be same as in the previous tutorials - I won't comments in these now:
protain
.node(this, 'name', {
getName: function () {
return this.name;
},
setName: function (name) {
this.name = name;
return this;
}
})
.node(this, 'guid', function () {
var id = 0;
return {
generateId : function () {
this.ID = id++;
return this;
}
}
}());
First thing you want to keep in mind is that classes are able to inherit from nodes only in the same namespace!
Then when you create a class, you just "list" the nodes you want to use for that class. Also, you still have the .define or .init methods available for custom class property definitions:
/**
* defining a "node class"
*/
protain
.class(this, 'MyFirstNodedClass', 'guid', 'name')
/**
* defines a property on the class
*/
.define({
CLASS_NAME: 'MyFirstNodedClass'
})
/**
* @constructor
*/
.init(function (instance, name) {
/**
* setting some instance properties
*/
instance
.generateId()
.setName(name + ' ' + (instance.ID + 1));
});
This was very hard, right? =) Now, let's see it in action by generating 10 instances in a loop and logging it out to the console:
/**
* instantiating 10 instances and logging them out
*/
for (var i = 0; i < 10; i++) {
console.log(
/**
* logging a new instance
*/
protain
.class(this, 'MyFirstNodedClass')
.create('Some random name')
);
}
Node-based class behaviour (I'm still wet...) is quiet simple I guess... =) You are also able to extend classes from each other but that belongs to another article...
Find Protain on GitHub: https://github.com/benqus/protain
Nincsenek megjegyzések:
Megjegyzés küldése