Search code examples
javascriptoopinheritanceprototypejs

I want to clone a javascript class. add methods to the cloned property without actually overwriting the exisiting methods?


I am trying to add methods to a cloned a prototype class property. I have pasted the code below.

At the moment when i add methods to this snippet of code it over writes whats been defined in the super class.

<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js" type="text/javascript"></script>
<script type="text/javascript">
var Animal = Class.create({
    initialize: function(name, sound) {
    this.name  = name;
    this.sound = sound;
    },

    speak: function() {
    alert(this.name + " says: " + this.sound + "!");
    }
});

Animal.movement = {
    move: function(direction){
        alert('moving: ' + direction)
    }
}

var AnimalClone = { }
Object.extend(AnimalClone, Animal);

//Now i want to add 'jump' to this list of methods 
//without over writing the inherited 'move' method
AnimalClone.movement = {
    jump: function(height){
        alert('jumped:' + height)
    }
}
</script>

Solution

  • You need to extend the movement object, not overwrite it:

    Object.extend(AnimalClone.movement, {
        jump: function(height){
            alert('jumped:' + height)
        }
    });