创建新的JS库 - 帮助确定基础结构

时间:2011-06-17 07:06:18

标签: javascript closures

我为公司创建一个新的库。我遵循的结构是

    (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() {
            }
    }

在这方面,我在访问私有函数时遇到了一些问题,因为它超出了lib原型中定义的公共函数的范围。

2 个答案:

答案 0 :(得分:2)

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() ....;

我希望你能找到这种格式的用法,当然我已经非常基本了

答案 1 :(得分:0)

  

在这方面,我在访问私有函数时遇到了一些问题,因为它超出了lib原型中定义的公共函数的范围。

这是因为private没有local这样的事情。您无法访问范围外的局部变量。

原型无法与构造函数中的局部变量进行通信。围绕这种情况有各种各样的黑客攻击,例如保留实例的公共哈希,但是你失去了“隐私”