Class with private function

Illustrate a Class with private function. The private function throw an error if invoked outside of the class.

by Avinash_R

HTML

<script src="http://digg.googlecode.com/files/Class-0.0.2.js"></script>
<textarea cols=30 rows=10></textarea>

JavaScript

var results=$('textarea');
function addText(text){
    results.text(results.text()+text+'\n')
}

var AnimalConstant = Class.create({
    LIVING_PLANET: 'Earth'
},true);

var Animal = Class.create(AnimalConstant,{
    init: function(name, sound) {
        this.name = name;
        this.sound = sound;
    },
    speak: function() {
        addText(this.name + " says: " + this.sound + "!");
    },
    _digest: function() {
        for (var i in this) {
            if (i && this[i] === arguments.callee.caller) {
                addText(this.name + ' digesting...');
                return;
            }
        }
        throw new Error('this is an internal function');
    },
    eat: function(foodType) {
        addText(this.name + ' eating ' + foodType);
        this._digest();
        addText(this.name + ' ate ' + foodType);
    },
    drink: function(drinkType) {
        addText(this.name + ' drinking ' + drinkType);
        this._digest();
        addText(this.name + ' drank ' + drinkType);
    },
    getHabitat: function(){
        return this.LIVING_PLANET;
    }
});

var elephant = new Animal('Jumbo', 'trumpet');
elephant.speak();
elephant.eat('plantain');
elephant.drink('water');
addText(elephant.name + ' lives on planet '+ elephant.getHabitat());