> 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.

Reply via email to