
Signature
Anyone who slaps a 'this page is best viewed with Browser X' label on
a Web page appears to be yearning for the bad old days, before the Web,
when you had very little chance of reading a document written on another
computer, another word processor, or another network. -- Tim Berners-Lee
Thanks for the reply.
AOP = aspect-oriented-programming. Aspects allow you to modularize
certain types of operations that are otherwise prone to being
intermingled with other code. A big part of AOP involves wrapping
method calls so that you can do something before each invokation of
the method and something afterward.
The something might be: check the user's permissions, log something,
start a timer then report how long the method took to execute, or
begin and then commit a transaction. In my particular case, I wanted
to implement lazy loading.
The AOP reference isn't really the important thing. It's just one way
of describing what I had in mind, which was to create an object that
wraps another object and layers on some functionality before
delegating to the wrapped object. Same as the decorator pattern. The
goal is just to separate the additional functionality (lazy loading)
from the core object so my walnut-sized brain can concentrate on one
thing at a time.
I suppose constructor.prototype is just as good, but I always seem to
have to set it manually, which is something else I don't get.
I suspect that moving to dynamic languages involves a shift in
thinking of the same order as first learning OO. Thanks for the hints,
-chris
On Oct 29, 4:05 pm, Thomas 'PointedEars' Lahn <PointedE...@web.de>
wrote:
> > If __proto__ were an official part of the language, implementing a
> > decorator or proxy pattern would be nicely simplified compared to
> > class-based inheritence. The "before-and-after" style of AOP (which is
>
> What do you mean by AOP?
Aspect-oriented programming. It's what's cool these days. It the
extreme opposite of having single DOM0 event handler. It is all about
decoupling concerns.
> > just another style of shorthand for delegation) would be possible
> > without any crazy tricks.
>
> > So, anyone care to set me straight? Why isn't __proto__ or something
> > like it a well defined part of javascript?
It should be part of the language. The Self language has an
interesting way of assigning multiple parent objects (aka prototypes.)
If this was possible in JavaScript it might be a nice way to have
multiple inheritance. Certainly in a prototype-based language I would
imagine that there would be more standard language-level support for
manipulating the prototype(s) of an object.
> It is a well-defined part of JavaScript. It is an implementation-dependent
> extension of ECMAScript, though. But that is so for several JavaScript
> features, especially lately.
>
> > Shouldn't it be??
I think so.
> Why, `.__proto__' is but a JavaScript shortcut for the ECMAScript-defined
> `.constructor.prototype'.
obj.__proto__ is not a short cut for obj.constructor.prototype. For
example...
var adam = {
name: 'Adam',
speak: function() {alert('get away from that snake');}
};
var eve = {
name: 'Eve',
speak: function() {alert('that apple sure looks juice');}
};
function Person(name) {
this.name = name;
}
Person.prototype = adam;
// repair
Person.prototype.constructor = Person;
var cain = new Person('Cain');
cain.speak(); // like adam
// sex change
cain.__proto__ = eve;
cain.speak(); // NOW like eve
var able = new Person('Able');
able.speak(); // like adam
//(Cain's sex change had no affect
// on people created in the future)
able.constructor.prototype = eve;
able.speak(); // STILL like adam
var mary = new Person('Mary');
mary.speak(); // like eve
Peter
Thomas 'PointedEars' Lahn - 30 Oct 2007 10:52 GMT
> On Oct 29, 4:05 pm, Thomas 'PointedEars' Lahn <PointedE...@web.de>
> wrote:
[quoted text clipped - 4 lines]
>
> Aspect-oriented programming. It's what's cool these days.
That must be it. I have never had much interest in hypes.
> It the extreme opposite of having single DOM0 event handler.
And what would a "DOM0 event handler" be?
> It is all about decoupling concerns.
So AOP is nothing more than a synonym for the misguided "Unobtrusive
JavaScript" hype?
>> Why, `.__proto__' is but a JavaScript shortcut for the ECMAScript-defined
>> `.constructor.prototype'.
>
> obj.__proto__ is not a short cut for obj.constructor.prototype.
I think it is if you set up the prototype chain properly. I will look into
this later.
PointedEars
Peter Michaux - 30 Oct 2007 19:36 GMT
On Oct 30, 2:52 am, Thomas 'PointedEars' Lahn <PointedE...@web.de>
wrote:
> > On Oct 29, 4:05 pm, Thomas 'PointedEars' Lahn <PointedE...@web.de>
> > wrote:
[quoted text clipped - 6 lines]
>
> That must be it. I have never had much interest in hypes.
Ignore the hype. APO is useful.
> > It the extreme opposite of having single DOM0 event handler.
>
> And what would a "DOM0 event handler" be?
<body onload="alert('an explicit example of DOM0 event handler');">
> > It is all about decoupling concerns.
>
> So AOP is nothing more than a synonym for the misguided "Unobtrusive
> JavaScript" hype?
No. Nothing to do with JavaScript.
http://en.wikipedia.org/wiki/Aspect-oriented_programming
> >> Why, `.__proto__' is but a JavaScript shortcut for the ECMAScript-defined
> >> `.constructor.prototype'.
[quoted text clipped - 3 lines]
> I think it is if you set up the prototype chain properly. I will look into
> this later.
One has to do with constructing new objects. The other with already-
constructed objects.
Peter
Thomas 'PointedEars' Lahn - 30 Oct 2007 21:38 GMT
>>> On Oct 29, 4:05 pm, Thomas 'PointedEars' Lahn <PointedE...@web.de>
>>> wrote:
[quoted text clipped - 6 lines]
>
> Ignore the hype. APO is useful.
That remains to be seen.
>>> It the extreme opposite of having single DOM0 event handler.
>> And what would a "DOM0 event handler" be?
>
> <body onload="alert('an explicit example of DOM0 event handler');">
This is not at all a "DOM0 event handler". It is a standardized attribute
(of HTML 4.01) that provides listener code for the equally standardized
`load' event (of DOM Level 2 Events).
>>> It is all about decoupling concerns.
>> So AOP is nothing more than a synonym for the misguided "Unobtrusive
[quoted text clipped - 3 lines]
>
> http://en.wikipedia.org/wiki/Aspect-oriented_programming
Thanks for the pointer; I would probably have found that shortly after, though.
>>>> Why, `.__proto__' is but a JavaScript shortcut for the ECMAScript-defined
>>>> `.constructor.prototype'.
[quoted text clipped - 4 lines]
> One has to do with constructing new objects. The other with already-
> constructed objects.
Your statement does not make sense.
PointedEars

Signature
"Use any version of Microsoft Frontpage to create your site. (This won't
prevent people from viewing your source, but no one will want to steal it.)"
-- from <http://www.vortex-webdesign.com/help/hidesource.htm>
John G Harris - 31 Oct 2007 17:43 GMT
<snip>
>// sex change
>cain.__proto__ = eve;
>cain.speak(); // NOW like eve
<snip>
How do you arrange that an assignment to cain.__proto__ cuts cain's
salary now that he is a she ?
Rather than change the cain object's type you should create a new cain
belonging to the other type and use that from now on.
John

Signature
John Harris