Отказ от ответственности: Я использую ExtJS 3, но я не думаю, что это очень актуально для вопроса, за пределами общего использования функции имён имен.Смещение объекта функции в JavaScript
У меня есть одноплодной, который объявлен в очень долгое пространство имен, как это:
Ext.ns("REALLY.REALLY.LONG.NAMESPACE");
var Singleton = (function() {
var foo = {
bar: "baz"
};
var privateFunction = function(param){
// ...
return foo;
};
var single = Ext.extend(Object, {
constructor: function(config) {
Ext.apply(this, config);
},
otherFunction: privateFunction,
publicFunction: function (someObject){
// do stuff with someObject
}
});
return single;
})();
// Make it a singleton
REALLY.REALLY.LONG.NAMESPACE.Singleton = new Singleton();
я использую его в других модулях через вызовы, как REALLY.REALLY.LONG.NAMESPACE.Singleton.otherFunction();
и REALLY.REALLY.LONG.NAMESPACE.Singleton.publicFunction(myObject);
. Мне интересно, могу ли я поменять эти вызовы, настроив клиентский модуль с псевдонимом на singleton, т. Е. var singleton = REALLY.REALLY.LONG.NAMESPACE.Singleton;
, чтобы я мог позвонить singleton.otherFunction();
. Мне интересно, если это anti-pattern, или если есть какие-то подводные камни (память?), Я мог бы столкнуться с этим использованием.
Спасибо StackOverflow!
это правда :) – cuzzea
@ Xander - отличный пример на IEF! – alvincrespo
@alvincrespo Ха-ха, хороший звонок ... Ксандер, я даже не подумал добавить его в аргументы, переданные моему закрытию. ** D'OH! ** – blong