I'll try to help Alex :)
But he may correct me if I am wrong.
I believe this little test will show full picture and all 4 common
styles of JS programming we are talking about here.
Notice there is nothing about inheritance, just plain objects (classes)
Once inheritance is involved things are slowing down with different ratios.
http://jsperf.com/closures-vs-objects-vs-object-literals-vs-prototype/2
Current proposed style of JS output is Object Literal (red bar in that
test);
Prototype (green bar) in plain object test seems to be 2nd solution
outperformed by closure (blue bar) these days.
But when inheritance is involved blue bar is getting shorter and
prototype is catching up.
Prototype pattern has also less footprint, since you adding 1 shared
behaviour to your object that will be reused wherever possible instead
creating brand new object.
There is no surprise why Closure style runs very well on web kit based
browsers since Google promoting this style and making optimisation just
for it.
FireFox trying to catch up, but Safari seems to do well both.
Here is a little example of inheritance done with prototype pattern
var Class = function(){}; //empty function to avoid invocation during
Function.prototype.extend = function(C){
Class.prototype = C.prototype;
this.prototype = new Class();
this.prototype.constructor = this;
return this.prototype
};
now you can easily do this:
function EventDispatcher(){}
p = EventDispatcher.prototype;
function DisplayObject(){
EventDispatcher.call(this); //equivalent of super
}
p = DisplayObject.extend(EventDispatcher);
THis is obviously simplified form of what is really needed but it is
good enough to cover lots of aspects already.
Don't want to repeat what has been already sent here as examples, but
simplicity and speed of this solution will outperform anything in
real-project-use-case-scenario.
Dan
On 11/27/2012 8:06 AM, Erik de Bruin wrote:
Alex,
You keep referring to a "prototype". I might be missing something.
Where can I find it/how do I run it?
EdB
On Mon, Nov 26, 2012 at 10:32 PM, Alex Harui <aha...@adobe.com> wrote: