Как получить доступ к «частным функциям» в синглтоне из другого объекта внутри него - PullRequest
3 голосов
/ 10 мая 2010

В настоящее время я пытаюсь создать набор тестов для моих приложений javascript. Моя проблема в том, что, кажется, я не могу получить доступ к init () из моего объекта utils, как вы можете видеть ниже:

У меня есть приложение, которое следует шаблону синглтона:

var appModal = function () {
    var utils = Object.create(moduleUtils);
     function init(caller, options ) {
    }
}();

Мой набор тестов находится в moduleUtils, это литерал объекта, преобразованный в прототип

moduleUtils.debug = {
    addSlideTest : function(){
        /* this function cannot fire init() from appModal */
}}

1 Ответ

1 голос
/ 10 мая 2010

Это невозможно.
Вам необходимо выставить закрытые функции в публично видимом объекте.

Например, вы можете создать объект testMethods в своих модульных тестах для сбора приватных методов. Ваш основной файл затем добавит приватные методы к объекту, если он существует, например:

//In appModal
if (typeof testMethods === "object")
    testMethods.init = init;

//In test suite
testMethods = { };
...
testMethods.init();
...