The abc namespace syntax is the simplest and useful when only public members are being wrapped.
The xyz namespace syntax can be used for public and private members.
var abc =
{
version: '1.0',
foo: function()
{
return 'abc.foo';
}
};
var xyz = function()
{
//private
var _version = '2.0';
function _foo()
{
return 'xyz.foo';
}
//public
return {
version: _version, //access private var
foo: function()
{
return _foo(); //access private fx
},
bar: function(text)
{
return 'xyz.bar ' + text;
}
};
}(); //self invoking fxExamples
abc.foo();
abc.version;
xyz.foo();
xyz.bar('test');
xyz.version;
//output
abc.foo
1.0
xyz.foo
xyz.bar test
2.0Object Graphs in Firebug Watch Window
A slightly modified version showing sub namespaces, eg abc.demo.foo()
var abc = {};
abc.demo =
{
version: '1.1',
foo: function()
{
return 'abc.demo.foo';
}
};
var xyz = {};
xyz.demo = function()
{
//private
var _version = '2.1';
function _foo()
{
return 'xyz.demo.foo';
}
//public
return {
version: _version, //access private var
foo: function()
{
return _foo(); //access private fx
},
bar: function(text)
{
return 'xyz.demo.bar ' + text;
}
};
}(); //self invoking fx
If you use libraries with nested namespaces, local references improve performance by minimizing member lookup.
var abcd = abc.demo; abcd.foo(); abcd.version;
No comments:
Post a Comment