繁体   English   中英

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

[英]Legal use of creating a new object on a global namespace

在全局名称空间上创建对象是否合法使用? 我的目标是为此应用程序创建1个全局名称空间。 另外,我将如何命名MYNYTE.app? 我可以在不污染Global名称空间的情况下执行以下操作: 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() );

这是我通常使用的结构。 有趣的是看是否还有更好的东西!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM