我正在尝试在JavaScript函数上模仿静态变量,其目的如下:
$.fn.collapsible = function() {
triggers = $(this).children('.collapse-trigger');
jQuery.each(triggers, function() {
$(this).click(function() {
collapse = $(this).parent().find('.collapse');
})
})
}
如何保存“崩溃”对象,以便不必在每次通话时“找到”?我知道使用命名函数我可以做类似“someFunction.myvar = collapse”的事情,但是像这样的匿名函数呢?
谢谢!
答案 0 :(得分:11)
如果您没有当前的功能名称,可以使用functioName.myVar = value
或arguments.callee.myVar = value
将变量保存在函数中。
arguments.callee
是您当前的职能。
答案 1 :(得分:8)
对于匿名函数,您可以使用返回函数的函数。
例如:
var myAnonymousFunction = (function(){
var myFirstStatic = $("#anElement");
var anotherStatic = true;
return function(param1,param2) {
// myFirstStatic is in scope
// anotherStatic also
}
})();
应该像魅力一样工作,并确保静态初始化代码只执行一次。
答案 2 :(得分:1)
似乎找到了这个问题的更好答案elsewhere on Stack Overflow。
简而言之,您实际上可以在不污染命名空间的情况下提供匿名函数名称,但仍然允许自引用。
mything.prototype.mymethod = function myKindOfFakeName() {
myKindOfFakeName.called = true;
}
答案 3 :(得分:0)
只要您将函数分配给这样的变量,您就应该能够以$.fn.collapsible
的形式访问它,从而将变量指定为$.fn.collapsible.myvar
。