Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:将函数用作变量_Javascript_Variables - Fatal编程技术网

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的更新版本了。