I have done something similar in Class.addBehavior:
http://github.com/kangax/protolicious/tree/master/class.addbehavior.js
On the other hand, it's actually pretty easy to do this with plain
Function#wrap:
(function(p){
p.push = p.push.wrap(function(){
var args = $A(arguments), proceed = args.shift();
console.log('before: ' + args);
(function(){ console.log('after: ' + args) }).defer();
return proceed.apply(proceed, args);
})
})(Array.prototype);
It's arguably not as "clean" as your implementation, so some could
definitely find it useful : )
- kangax
On May 14, 12:13 pm, Pat Nakajima <[EMAIL PROTECTED]> wrote:
> I've started putting together a way to specify per-object before/after
> callbacks for any method. Probably not something to go in core, but
> maybe something that would be interesting to core contributors.
>
> There are some examples in a GitHub wiki (http://github.com/nakajima/
> nakatype/wikis/callbacks), but basically, you specify callbacks like
> so:
>
> var someArray = [1,2,3];
>
> Callbacks.add(someArray, {
> before: {
> push: function(entry) {
> var msg = 'about to push ' + entry + ' on array: ' +
> this.join(', ');
> console.info(msg);
> }
> },
>
> after: {
> push: function(entry) {
> var msg = 'just pushed ' + entry + ' on array: ' +
> this.join(', ');
> console.info(msg);
> }
> }
> });
>
> someArray.push(4);
>
> In addition to adding 4 to someArray, the above code snippet will log
> to the console before and after.
>
> If anybody has any suggestions/criticisms/threats, please do share!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Prototype: Core" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---