nsdeclare
Safely declare a namespace using dot notation
Usage
var declare = ; var declaration = ;
Result:
this"MyApp" = this"MyApp" || {};this"MyApp""Templates" = this"MyApp""Templates" || {};
Options
Options can be passed as the second argument to nsdeclare
.
value
Type: String
By passing options.value
, you can use nsdeclare
to both declare and safely assign properties of a namespace:
var declare = ; var declaration = ;
Result:
this"MyApp" = this"MyApp" || {};this"MyApp""Templates" = this"MyApp""Templates" || {};this"MyApp""Templates""Main" = { return "Main"; };
declared
Type: Object
To avoid redeclaration, you can pass a list of already declared namespace parts as options.declared
:
var declare = ; var options = declared: 'MyApp': true ; var declaration = ;
Result:
this"MyApp""Views" = this"MyApp""Views" || {};this"MyApp""Templates" = this"MyApp""Templates" || {};this"MyApp""Models" = this"MyApp""Models" || {};this"MyApp""Collections" = this"MyApp""Collections" || {};
Note that, if you don't pass options.declared
and a namespace part is already declared, nsdeclare
will not overwrite it.
separator
Type: String
Default: '\n'
If you would like to separate declaration parts with something other than \n
, you can pass it as options.separator
:
var declare = ; var declaration = ;
Result:
this"MyApp" = this"MyApp" || {};this"MyApp""Templates" = this"MyApp""Templates" || {};
root
Type: String
Default: 'this'
By default, nsdeclare
will declare namespaces within the this
object (which defaults to window
in browser environments). You can change this behavior with options.root
:
var declare = ; var declaration = ;
Result:
global"MyApp" = global"MyApp" || {};global"MyApp""Templates" = global"MyApp""Templates" || {};
response
Type: String
Default: declaration
By default, nsdeclare
will return the declaration as a string. In some cases, you might want additional details such as a safe reference to the namespace itself. Passing response: 'details'
will cause nsdeclare
to return an object with the following properties:
namespace
- The namespace itself as aString
declaration
- The declaration of the namespace as aString
var declare = ; var declaration = ;
Result:
namespace: 'this["MyApp"]["Templates"]' declaration: 'this["MyApp"] = this["MyApp"] || {};\nthis["MyApp"]["Templates"] = this["MyApp"]["Templates"] || {};'