[英]can a function reference itself in javascript?
假设我们定义了一个函数,该函数只是将其输入增加一些存储值dd
:
var obj={}
obj.dd=1
obj.f=function(x){
return x+this.dd
}
另外,您可以按如下方式为dd
创建一个闭包,但这将创建一个静态增量,而不是稍后可能更改的增量:
var dd=1
var f=function(x){
return x+dd
}
我们可以选择将dd
存储在函数本身中:
var obj={}
obj.f=function(x){
return x+this.f.dd
}
obj.f.dd=1
我很好奇一个函数是否有可能在不通过父对象的情况下检索附加到其自身的变量,例如self
关键字,它引用该函数本身并允许以下操作:
var f=function(x){
return x+self.dd
}
f.dd=1
我知道没有必要做这样的事情,但我认为如果可以的话,这很酷。
您可以为函数文字赋予一个名称:
var f = function me(x) {
return x + me.dd;
};
f.dd = 1;
但是,这在旧版本的IE / JScript中无法正常工作,因为me
和f
没有引用同一对象。 (不推荐使用并且在严格模式下不可用)替代方法是arguments.callee
:
var f = function(x) {
return x + arguments.callee.dd;
};
f.dd = 1;
另外,您关于关闭的说明不太正确; 以后甚至可以通过其他功能对其进行更改:
var dd = 1;
var f = function(x) {
return x + dd;
};
var setdd = function(_dd) {
dd = _dd;
};
函数是对象。 如果引用包含函数的var:
var f = function (x) {
return x + f.dd
};
f.dd = 1;
alert(f(1));
结果: 2
如果该函数已命名,则可以执行以下操作:
function foo(x) {
return x + foo.dd;
}
foo.dd = 1;
alert(foo(1));
结果: 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.