jNs(name: string): Namesapce
jNs
— это функция, которая одновременно частично выступает в роли корневого объекта пространства имён.
jNs
делегирует свойства modules
и методы using
, define
, use
функции jNs()
, но не делегирует свойство name
. Это связано с тем, что jNs
сама является функцией, а её свойство name
представляет собой имя функции, которое нельзя изменить.
Эквивалентно
jNs().using()
, см.Namesapce.prototype.using()
Эквивалентно
jNs().define()
, см.Namespace.prototype.define()
Эквивалентно
jNs().use()
, см.Namespace.prototype.use()
name: string
Получает название текущего пространства имён (полное имя).
Пример:
var name = jNs("jNs.demo") // "jNs.demo"
module: string[]
Получает список модулей, которые уже были определены в текущем пространстве имён.
Пример:
var ns = jNs("jNs.demo")
ns.define("m1", function() {})
ns.define("m2", function() {})
ns.define("m3", function() {})
var modules = ns.modules // ["m1", "m2", "m3"]
using(name: string): Namespace
Переходит в пространство имён, указанное параметром name
, внутри текущего пространства имён.
Пример:
var demoNs = jNs("jNs.demo")
var demoAppNs = demoNs.using("app")
demoAppNs.name // "jNs.demo.app"
define(name: string, factory: function): Module
define(name: string, exports: any): Module
define(factory: function): Module
Определяет фабричную функцию.
Функция factory
принимает модуль Module
в качестве первого параметра.
Модуль может быть определён как именованный или анонимный. Именованные модули могут быть определены с помощью фабричной функции или путём экспорта объекта. Анонимные модули могут быть определены только с помощью фабричной функции.
Если name
разделено точками (``.`), то последняя часть будет именем модуля, а предыдущие части будут представлять родительские пространства имён.
Фабричная функция вызывается один раз при первом использовании модуля. Её возвращаемое значение становится экспортируемым объектом модуля и сохраняется в кэше. При последующих использованиях модуля его экспортируемый объект берётся из кэша без повторного вызова фабричной функции.
Пример:
jNs("jNs.demo").define("creator", function() {
return function(code, message) {
return {
code: parseInt(code) || 0,
message: message || null
}
}
})
jNs.define("jNs.demo.global", {
ver: 1.0
})
jNs("jNs.demo").define(function(m) {
m.ns.use("global").model = m.ns.use("creator")(0, "success")
console.log(m.ns.use("global"))
// Object {ver: 1, model: {code: 0, message: "success"}}
}).use()
use(name: string): any
Использует модуль из текущего пространства имён и возвращает его экспортируемый объект. Если name
разделено точками (``.`), то последняя часть будет именем модуля, а предыдущие части будут представлять родительские пространства имён.
Пример:
jNs("jNs.demo").define("hello", "world")
var s = jNs().use("jNs.demo.hello") // "world"
jNs("jNs.demo").define("hi", function() {
return "world"
})
var s = jNs.use("jNs.demo.hi") // "world"
Объект модуля обычно используется только в фабричных функциях для доступа к свойствам ns
или namesapce
. Также он может использоваться сразу после определения анонимного модуля с помощью метода use()
фабричной функции.
name: string
Возвращает имя модуля без имени родительского пространства имён. Для получения полного имени следует использовать имя родительского пространства имён вместе с именем модуля.
Пример:
jNs("jNs.demo").define("fullname", function(m) {
return [m.ns.name, m.name].join(".")
})
jNs.use("jNs.demo.fullname") // "jNs.demo.fullname"
namesapce: Namespace
Возвращает объект пространства имён, которому принадлежит модуль. Полезно при использовании других модулей из того же пространства имён в фабричной функции.
ns
— сокращение отnamespace
, см.Module.prototype.namespace
use(): any
Возвращает экспортируемый объект модуля. Аналогичен методу Namespace.prototype.use()
, но не требует параметров.
Анонимные модули не могут быть вызваны с помощью Namespace.prototype.use()
, только через метод use()
самого модуля.
Пример:
jNs.define(function() {
console.log("hello world")
}).use()
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )