我为公司创建一个新的库。我遵循的结构是
(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原型中定义的公共函数的范围。
答案 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
这样的事情。您无法访问范围外的局部变量。
原型无法与构造函数中的局部变量进行通信。围绕这种情况有各种各样的黑客攻击,例如保留实例的公共哈希,但是你失去了“隐私”