3

有没有办法使用分配了函数的变量名,例如,获取元素的实际宽度?

var xvar = function(){ return $('#y').width()}

并将其用作

console.log(xvar);

代替

console.log(xvar());

4

3 回答 3

12

不是变量,但对象的属性是可能的。它被称为吸气剂。

var obj = {
  get xvar() { return $('#y').width(); }
};

然后你可以使用:

obj.xvar;  // will run the above function

(理论上,使用变量 getter 的一种方法是当对象的属性反映变量时。例如,window对象。)

于 2012-06-06T14:10:55.413 回答
2

只要您的函数返回String或者Number这可能是非 ES5 环境的替代方案:

var xvar = new function(id){ 
              this.toString = 
              this.valueOf = function(){
                   return $(id).width()};
           }('#y');
于 2012-06-06T14:46:28.180 回答
0

如果我没有弄错,它将起作用,因为xvar将存储对立即调用函数结果的引用:

var xvar = (function() { return $('#y').width(); })();
console.log(xvar);

但是在它之后你不能使用xvar()版本。

于 2012-06-06T14:20:49.947 回答