Reputation: 41473
I have the following JS code:
window.Foo = {};
window.Foo.Name1 = function()
{
function Bar1(param1)
{
this.Name = param1;
}
}
var gMyBar = new Foo.Name1.Bar1("hello world");
alert(gMyBar.Name);
I'm getting the error "Foo.Name1.Bar1 is not a constructor" in my Firefox error console... what gives?
Upvotes: 2
Views: 7083
Reputation: 7238
You're confused about "namespaces" in JavaScript. JavaScript does not have namespaces, only objects and functions. You've declared Bar1
as a local function within the closure of the function Name1
. It is not a member of Name
. I'm not sure what you're going for here, but I think this is it:
var Foo = {
Name1: {
Bar1: function(param1) {
this.Name = param1;
}
}
};
var gMyBar = new Foo.Name1.Bar1("hello world");
alert(gMyBar.Name); // hello world
Upvotes: 8
Reputation: 827178
The problem is that Bar1
is a local function, available only to the scope of the Name1
function.
If you want to access Bar1
, you could make Name1
another namespace level:
window.Foo = {};
window.Foo.Name1 = {
Bar1: function (param1) {
this.Name = param1;
}
};
var gMyBar = new Foo.Name1.Bar1("hello world");
alert(gMyBar.Name); // "hello world"
Upvotes: 3