Создание новой библиотеки JS - помощь в определении базовой структуры - PullRequest
0 голосов
/ 17 июня 2011

Я создаю новую библиотеку для компании.Структура, которой я следую, выглядит следующим образом:

    (function() {
            var lib = function() {
                    //some private and public fn definitions

                    //setting publically avbl functions
                    return {
                    func1 : func1, func2: func2
                    };
            };
            return (window.lib = lib);
    })();

Теперь я называю это

    lib.func1();

Я хочу, чтобы моя библиотека называлась

    lib(function | string | object).someproperty

КакЯ конвертирую свой кодПопробовал что-то вроде этого

    function lib() {
            return new arguments.callee(arguments);
    }

    lib.prototype={
            publicfunc: function() {
            }
    }

В этом у меня есть некоторые проблемы с доступом к закрытым функциям, так как это выходит за рамки открытых функций, определенных в прототипе библиотеки.

Ответы [ 2 ]

2 голосов
/ 17 июня 2011
var lib = (function (param) {

   var func = function () {
     /// your code

     return {
         animate : function () {
          // do the animation
          return this;
     }
   }

   return func;
})();

это может быть основной fprmat.

хорошо, вот как я могу быть использован.

lib(function() {...});

или

lib(selectItem).animate();

, потому что я вернулсяthis Я могу запустить другой метод, если он есть.

lib(selectItem).animate().animate().animate().animate() ....;

Я надеюсь, что вы можете найти использование этого формата, конечно, я сделал его очень простым

0 голосов
/ 17 июня 2011

В этом у меня есть некоторые проблемы с доступом к закрытым функциям, так как это выходит за рамки открытых функций, определенных в прототипе библиотеки.

Это потому, что такого нетвещь как private есть только local.Вы не можете получить доступ к локальным переменным вне области видимости.

Прототип не может общаться с локальными переменными в конструкторе.Существуют различные способы взлома, такие как сохранение публичного хэша экземпляров, но тогда вы теряете «конфиденциальность»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...