I've recently started using prototype.js, but I've been doing "AJAX"
for long time now.

I've inspected the prototype.js code, and I think I've got an
interesting addition to the Object.extend.
I might have reinvent the wheel here, so if it's nothing new please
give me some pointers as to how to accomplish the same with the native
prototype.js code.

Basically, I was looking for a way to call the original function of an
extended object. Here is my modification:

// a new version of extend

Object.extend2 = function(destination, source) {

  for (var property in source) {
          if(destination[property]) {
                  if(!destination['__super']) {
                        destination['__super'] = {};
                destination['__super'][property] = destination[property];
          destination[property] = source[property];
  return destination;

// code to be executed to see the behavior.
var a = Class.create();
a.prototype = {
        initialize: function(name,link) {
                this.elements = new Object();
        test: function() {

var b = Class.create();
b.prototype = Object.extend2(new a(), {
                initialize: function() {


                test: function() {

var B = new b();

// END

after executing this code, you should first see the "hello" alert, and
then "hello2".

I think this is an interesting addition, since I find myself often in
need to be able to access methods of the original object, without
having to copy/paste it's behavior to the new one.

You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to prototype-core@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 

Reply via email to