Extending objects (Dojo)
Black Ninja is killing Bob
HTML
<div id='result'></div>
CSS
#result {
margin-top: 10px;
color: navy;
font-weight: bold;
font-size: 11px;
font-family: Helvetica, Tahoma, Arial;
}
JavaScript
var printData = function(obj){
dojo.create('p', {
'innerHTML': obj.name + ' - energy: ' + obj.energy + ', alive: ' + obj.isAlive
}, 'result');
};
// --------------------------------
dojo.declare("Human", null, {
constructor: function(kwArgs) {
dojo.mixin(this, kwArgs);
},
isAlive: true,
energy: 1,
eat: function(){
this.energy++;
}
});
// -------------------------------
dojo.declare("Ninja", Human, {
// constructor inheritance is automatic unless Manual constructor chaining is used
energy: 100,
attack: function(target){
this.energy = this.energy - 5;
target.isAlive = false;
}
});
var bob = new Human({name:'Bob', age:25});
var blackNinja = new Ninja({side:'evil', name:'Nin Tendo', age:'unknown'});
printData(bob);
printData(blackNinja);
blackNinja.attack(bob);
printData(bob);
printData(blackNinja);