在全局命名空间上创建新对象的合法使用

Legal use of creating a new object on a global namespace

本文关键字:对象 命名空间 全局 创建 新对象      更新时间:2023-09-26

在全局命名空间上创建对象是否合法?我的目标是为这个应用程序创建一个全局名称空间。我如何别名mynyte。app?var b = mynyet .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() );

这是我常用的结构。看看有没有更好的东西,真有意思!

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;
})();