Создание закрытия библиотеки JavaScript - PullRequest
3 голосов
/ 20 марта 2011

В последние несколько дней я разрабатывал библиотеку JavaScript, похожую на Underscore.js и Jquery.В обеих этих библиотеках они используют объект, который может принимать параметры, но также может иметь методы, вызываемые для него: $ ("param"). Method ();или _ ("param"). method ();

Я читал исходный код обеих библиотек, пытаясь понять, как они реализуют такую ​​вещь, но не смог понять это,Я не знаю название этого типа закрытия, поэтому я не смог его найти.

Буду признателен за любую помощь, я просто пытаюсь выяснить, как я могу внедрить объект этого типа в мою библиотеку.

Ответы [ 3 ]

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

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

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

   return func;
})();

Вы можете использовать

lib(function(){}).something();
lib("selector").something().something().something();
lib(DOMElement).something().something().something();

Определение

lib.prototype={
some: function() {}
};

позволяет использовать

lib("foo").some();
3 голосов
/ 20 марта 2011

Вы просто создаете функцию, которая возвращает объект с методами.Пример:

function test(demo) {
  return {
    show: function() { alert(demo); }
  };
}

test("Hello world").show();
0 голосов
/ 20 марта 2011

Ничего особенного не делайте, просто создайте функцию и добавьте атрибуты (некоторые из которых могут быть функциями):

function a(){
   alert(1);
}

a.b = function(){
   alert(2);
}

Теперь вы можете делать оба:

a()

или:

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