> If you had the external file "foo.js" and inside "foo.js" was a class called
> "bar", you want, the command "new bar()" to load "foo.js" in a script tag
> and initiate the class "bar", is this right?
Yes and no. More likely foo.js would contain a class called Foo. So
given the name of the class, I know the name of the file.
> to intercept the call to "new"
I'm wondering if instead of that, I could create a new function let's
just call it "dnew" for "Dependant New" or something like that. Not a
great name but the only other short name I can think of is "newd"
So I instead of this:
myObj = new MyClass(param1,{
option1 : 1,
option2 : 2
});
I would do this
myObj = dnew(MyClass(param1,{
option1: 1,
option2 :2
)));
then dnew checks for the existance of MyClass, if it doesn't already
exist, it loads MyClass.js, then regardless it calls "new" although
I'm not quite sure how I could capture the input to "dnew" and use it
to call "new". I see the need for eval() in my future.
On Apr 6, 11:18 pm, "Matthew Hazlett" <[email protected]> wrote:
> If you had the external file "foo.js" and inside "foo.js" was a class called
> "bar", you want, the command "new bar()" to load "foo.js" in a script tag
> and initiate the class "bar", is this right?
>
> Well, the only way that I know of that you could accomplish such a thing in
> pure JS is to intercept the call to "new" determine what file the class
> desired is located in. But, short of joining the Mozilla dev team and
> writing that in to the next version of JavaScript I would venture to say you
> are out of luck. As far as I know, there is no hook or event that gets
> triggered when you issue the command "new".
>
> However, thinking out loud a minute you might be able to trap for an error
> then use a async ajax query that calls a php function that scans a directory
> of files for the class you want. Returns the file name and dynamically
> loads it, then tries to create the class. (takes a deep breath, then falls
> over from exhaustion)
--
To unsubscribe, reply using "remove me" as the subject.