这是否合法地在全局命名空间中创建对象?我的目标是为此应用程序创建1个全局命名空间。另外我怎么别名MYNYTE.app?我可以做这样的事情而不污染全局命名空间: var b = MYNYTE.app;
if( ! MYNYTE ) MYNYTE = {};
if( ! MYNYTE.app ) MYNYTE.app = {};
MYNYTE.app.Playbook = function(){
this.change = '';
this.boo = function(){alert('boo');}
this.setChange = function( v )
{
this.change = v;
}
this.getChange = function( v )
{
return this.change;
}
}
var test = new MYNYTE.app.Playbook();
var test2 = new MYNYTE.app.Playbook();
test.boo();
test.setChange( 'Change is bad' );
test2.boo();
test2.setChange( 'Change is great' );
console.log( test2.getChange() );
console.log( test.getChange() );
答案 0 :(得分:0)
这是我经常使用的结构。有意思看是否有更好的东西!
var MYNYTE = MYNYTE || {};
MYNYTE.app = MYNYTE.app || {};
(function() {
var Playbook = function Playbook() {
...
};
MYNYTE.app.Playbook = Playbook;
})();
// Avoid polluting the global scope
(function() {
var b = MYNYTE.app.Playbook;
var OtherClass = function OtherClass() {
...
b.setChange( 'something' );
};
MYNYTE.app.OtherClass = OtherClass;
})();