Javascript:将函数用作变量
有没有一种方法可以使用分配了函数的变量名,例如,获取元素的实际宽度Javascript:将函数用作变量,javascript,variables,Javascript,Variables,有没有一种方法可以使用分配了函数的变量名,例如,获取元素的实际宽度 var xvar=function(){return$('#y').width()} 并将其用作 console.log(xvar) 而不是 console.log(xvar())不使用变量,但可以使用对象上的属性。它被称为getter var obj = { get xvar() { return $('#y').width(); } }; 然后您可以使用: obj.xvar; // will run the abov
var xvar=function(){return$('#y').width()}
并将其用作
console.log(xvar)代码>
而不是
console.log(xvar())代码>不使用变量,但可以使用对象上的属性。它被称为getter
var obj = {
get xvar() { return $('#y').width(); }
};
然后您可以使用:
obj.xvar; // will run the above function
(理论上,使用变量getter的一种方法是当对象的属性反映变量时。例如,窗口
对象。)如果我没有弄错,它将起作用,因为xvar
将存储对立即调用函数的结果的引用:
var xvar = (function() { return $('#y').width(); })();
console.log(xvar);
但在此之后,您不能使用xvar()
版本。只要您的函数返回String
或Number
,这可能是非ES5环境的替代方案:
var xvar = new function(id){
this.toString =
this.valueOf = function(){
return $(id).width()};
}('#y');
一般来说,如果不调用函数,就不能调用函数,尽管您可能希望了解如何使用属性getter函数(仅在较新的JavaScript解释器中)。编辑见@pimvdb的答案:-)+1。如果我没说错的话,它不完全支持跨浏览器。这是ES5/6吗?我从没听说过这个。弗洛里安·马金恩说:“不过这太棒了。”。goggle javascript getter@gdoron:非常正确,观点正确。@弗洛里安杂志:。@FlorianMargaine。您应该学习如何在谷歌上搜索有关javascript的内容。您添加了一个MDN前缀。。。这基本上相当于var xvar=$('#y').width()代码>。它不会在access上运行函数。是的,这只是在第一个位置分配返回值。这样你就不会得到width的更新版本了。