Hi,

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() {
                alert('hello');
        }
}

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

                },

                test: function() {
                        this.__super.test();
                        alert('hello2');
                }
        }
)

var B = new b();
B.test();

// 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 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to