I’ve seen various patterns in object creation, but upon diving into some Firefox framework Javascript, I’d noticed that they’re using a convention that I haven’t seen before and I’m hoping that someone here can either confirm my assumption or correct me:
When building a class, I’ve done this (and variations of) in the past:
function MyClass() {
this.myPublicFunction = function() {
};
var myPrivateFunction = function() {
};
}
Bound anonymous functions. Cool. This is what I’ve seen throughout most frameworks and such.
However, it seem that Mozilla does this:
function MyClass() {
this.myPublicFunction = function MYCLASS_myPublicFunction() {
};
var myPrivateFunction = function MYCLASS_myPrivateFunction() {
};
}
My assumption is that in using the latter convention, JS JIT compiles the functions, but wouldn’t pick up the first two as they’d be defined at run-time rather than parse time.
Is this assumption correct and if so, does this also apply to other JS engines or just Spidermonkey?
Reasons to use NFE:
Note that function declarations are better then NFE. (From a personal style choice)
Also note that the word “private” is misleading, but that’s a tangent.